08-02-2019 08:04 AM
We are working on making a high availability cluster of two IC-3120 which run our Labview-software.
We want to do this using pacemaker and pcs.
Pacemaker is installed from source using this guide:
https://github.com/ClusterLabs/pacemaker/blob/master/INSTALL.md
We are then trying to install pcs from source using this guide:
https://github.com/ClusterLabs/pcs
Here we get the following error (snippet from console output):
Installing ffi 1.9.25 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /usr/lib/ruby/gems/2.4.0/gems/ffi-1.9.25/ext/ffi_c /usr/bin/ruby -I /usr/lib/ruby/site_ruby/2.4.0 -r ./siteconf20190802-6161-pvoxla.rb extconf.rb *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/bin/$(RUBY_BASE_NAME) --with-ffi_c-dir --without-ffi_c-dir --with-ffi_c-include --without-ffi_c-include=${ffi_c-dir}/include --with-ffi_c-lib --without-ffi_c-lib=${ffi_c-dir}/lib --with-libffi-config --without-libffi-config --with-pkg-config --without-pkg-config /usr/lib/ruby/2.4.0/mkmf.rb:457:in `try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /usr/lib/ruby/2.4.0/mkmf.rb:542:in `try_link0' from /usr/lib/ruby/2.4.0/mkmf.rb:557:in `try_link' from /usr/lib/ruby/2.4.0/mkmf.rb:658:in `try_ldflags' from /usr/lib/ruby/2.4.0/mkmf.rb:1818:in `pkg_config' from extconf.rb:15:in `<main>' To see why this extension failed to compile, please check the mkmf.log which can be found here: /usr/lib/ruby/gems/2.4.0/extensions/x86_64-linux/2.4.0/ffi-1.9.25/mkmf.log extconf failed, exit code 1 Gem files will remain installed in /usr/lib/ruby/gems/2.4.0/gems/ffi-1.9.25 for inspection. Results logged to /usr/lib/ruby/gems/2.4.0/extensions/x86_64-linux/2.4.0/ffi-1.9.25/gem_make.out An error occurred while installing ffi (1.9.25), and Bundler cannot continue. Make sure that `gem install ffi -v '1.9.25' --source 'https://rubygems.org/'` succeeds before bundling. In Gemfile: ethon was resolved to 0.11.0, which depends on ffi make[1]: *** [Makefile:32: get_gems] Error 5 make[1]: Leaving directory '/git/pcs/pcs-0.10.2/pcsd' make: *** [Makefile:237: install] Error 2
The mkmf.log:
"pkg-config --exists libffi" | pkg-config --libs libffi => "-lffi\n" "x86_64-nilrt-linux-gcc -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=/srv/jenkins/perforce/ThirdPartyExports/NIOpenEmbedded/trunk/6.5/objec$ In file included from /usr/include/ruby-2.4.0/ruby/ruby.h:36:0, from /usr/include/ruby-2.4.0/ruby.h:33, from conftest.c:1: /usr/include/ruby-2.4.0/ruby/defines.h:101:19: fatal error: stdio.h: No such file or directory #include <stdio.h> ^ compilation terminated. checked program was: /* begin */ 1: #include "ruby.h" 2: 3: int main(int argc, char **argv) 4: { 5: return 0; 6: } /* end */
Has anyone seen something similar?
Is it the C-compiler which is not properly set up?
08-02-2019 12:01 PM - edited 08-02-2019 12:16 PM
Hi aaroentr,
You'll need to interpret the error logs and compiler settings. The one thing that jumps out at me is this:
"x86_64-nilrt-linux-gcc -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=/srv/jenkins/perforce/ThirdPartyExports/NIOpenEmbedded/trunk/6.5/objec$ In file included from /usr/include/ruby-2.4.0/ruby/ruby.h:36:0, from /usr/include/ruby-2.4.0/ruby.h:33, from conftest.c:1: /usr/include/ruby-2.4.0/ruby/defines.h:101:19: fatal error: stdio.h: No such file or directory #include <stdio.h>
It looks like you're not finding the stdio.h header file. That header should be located in the /usr/include directory.
One potential problem I see is that your gcc command has a sysroot that shouldn't be required if you're compiling on the target. How are you generating the makefile? Where are you getting that sysroot flag from? What version of LabVIEW Real-Time is installed on the target?
08-07-2019 03:46 AM
Hi GatorBait
Thanks for your reply.
I have found stdio.h in /usr/include.
The makefile is not generated by me. It is included in the .tar.gz from the github repo.
I am not familiar with the sysroot flag. Should I be able to diable this and hopefully advance further?
The target has NI Linux Real-Time version 6.0.
Truls