ankane / or-tools-ruby

Operations research tools for Ruby
Apache License 2.0
171 stars 20 forks source link

Problem with install #23

Closed viniciuscurti closed 2 years ago

viniciuscurti commented 3 years ago

Hi,

I`m getting some trouble installing or-tools.

The log shows this message: find_header: checking for rice/rice.hpp in /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rice-4.0.2/include... -------------------- yes

"g++ -o conftest -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/x86_64-linux -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/backward -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0 -I. -I/home/viniciuscurti/.rbenv/versions/2.6.3/include -O3 -ggdb3 -Wall -Wextra -Wdeclaration-after-statement -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wrestrict -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable conftest.cc -L. -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -Wl,-rpath,/home/viniciuscurti/.rbenv/versions/2.6.3/lib -L. -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/home/viniciuscurti/.rbenv/versions/2.6.3/lib -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -lruby -lm -lc" cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-int’ is valid for C/ObjC but not for C++ cc1plus: warning: unrecognized command line option ‘-Wno-self-assign’ cc1plus: warning: unrecognized command line option ‘-Wno-parentheses-equality’ cc1plus: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ checked program was: / begin / 1: #include "ruby.h" 2: 3: int main(int argc, char *argv) 4: { 5: return 0; 6: } / end */

"g++ -E -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/x86_64-linux -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/backward -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0 -I. -I/home/viniciuscurti/.rbenv/versions/2.6.3/include -O3 -ggdb3 -Wall -Wextra -Wdeclaration-after-statement -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wrestrict -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -fPIC conftest.cc -o conftest.i" cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-int’ is valid for C/ObjC but not for C++ conftest.cc:3:10: fatal error: rice/rice.hpp: No such file or directory 3 | #include <rice/rice.hpp> | ^~~~~~~ compilation terminated. checked program was: / begin / 1: #include "ruby.h" 2: 3: #include <rice/rice.hpp> / end /

"g++ -E -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/x86_64-linux -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/backward -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0 -I. -I/home/viniciuscurti/.rbenv/versions/2.6.3/include -O3 -ggdb3 -Wall -Wextra -Wdeclaration-after-statement -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wrestrict -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -fPIC -I/home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rice-4.0.2/include conftest.cc -o conftest.i" cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-int’ is valid for C/ObjC but not for C++ cc1plus: warning: unrecognized command line option ‘-Wno-self-assign’ cc1plus: warning: unrecognized command line option ‘-Wno-parentheses-equality’ cc1plus: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ checked program was: / begin / 1: #include "ruby.h" 2: 3: #include <rice/rice.hpp> / end /


have_library: checking for -lstdc++... -------------------- yes

"g++ -o conftest -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/x86_64-linux -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/backward -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0 -I. -I/home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rice-4.0.2/include -I/home/viniciuscurti/.rbenv/versions/2.6.3/include -O3 -ggdb3 -Wall -Wextra -Wdeclaration-after-statement -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wrestrict -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable conftest.cc -L. -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -Wl,-rpath,/home/viniciuscurti/.rbenv/versions/2.6.3/lib -L. -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/home/viniciuscurti/.rbenv/versions/2.6.3/lib -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -lruby -lstdc++ -lm -lc" cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-int’ is valid for C/ObjC but not for C++ cc1plus: warning: unrecognized command line option ‘-Wno-self-assign’ cc1plus: warning: unrecognized command line option ‘-Wno-parentheses-equality’ cc1plus: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ checked program was: / begin / 1: #include "ruby.h" 2: 3: /top/ 4: extern int t(void); 5: int main(int argc, char *argv) 6: { 7: if (argc > 1000000) { 8: int ( volatile tp)(void)=(int ()(void))&t; 9: printf("%d", (tp)()); 10: } 11: 12: return 0; 13: } 14: 15: int t(void) { ; return 0; } / end /


have_library: checking for -lstdc++... -------------------- yes

"g++ -o conftest -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/x86_64-linux -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/backward -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0 -I. -I/home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rice-4.0.2/include -I/home/viniciuscurti/.rbenv/versions/2.6.3/include -O3 -ggdb3 -Wall -Wextra -Wdeclaration-after-statement -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wrestrict -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable conftest.cc -L. -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -Wl,-rpath,/home/viniciuscurti/.rbenv/versions/2.6.3/lib -L. -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -fstack-protector-strong -rdynamic -Wl,-export-dynamic -lstdc++ -Wl,-rpath,/home/viniciuscurti/.rbenv/versions/2.6.3/lib -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -lruby -lstdc++ -lstdc++ -lm -lc" cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-int’ is valid for C/ObjC but not for C++ cc1plus: warning: unrecognized command line option ‘-Wno-self-assign’ cc1plus: warning: unrecognized command line option ‘-Wno-parentheses-equality’ cc1plus: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ checked program was: / begin / 1: #include "ruby.h" 2: 3: /top/ 4: extern int t(void); 5: int main(int argc, char *argv) 6: { 7: if (argc > 1000000) { 8: int ( volatile tp)(void)=(int ()(void))&t; 9: printf("%d", (tp)()); 10: } 11: 12: return 0; 13: } 14: 15: int t(void) { ; return 0; } / end /


have_library: checking for -lortools... -------------------- no

"g++ -o conftest -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/x86_64-linux -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/backward -I/home/viniciuscurti/.rbenv/versions/2.6.3/include/ruby-2.6.0 -I. -I/home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rice-4.0.2/include -I/path/to/or-tools/include -I/path/to/or-tools/include -I/home/viniciuscurti/.rbenv/versions/2.6.3/include -O3 -ggdb3 -Wall -Wextra -Wdeclaration-after-statement -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wrestrict -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable conftest.cc -L. -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -Wl,-rpath,/home/viniciuscurti/.rbenv/versions/2.6.3/lib -L/path/to/or-tools/lib -Wl,-rpath,/path/to/or-tools/lib -L. -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/path/to/or-tools/lib -L/path/to/or-tools/lib -lstdc++ -lstdc++ -Wl,-rpath,/home/viniciuscurti/.rbenv/versions/2.6.3/lib -L/home/viniciuscurti/.rbenv/versions/2.6.3/lib -lruby -lortools -lstdc++ -lstdc++ -lm -lc" cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-int’ is valid for C/ObjC but not for C++ cc1plus: warning: unrecognized command line option ‘-Wno-self-assign’ cc1plus: warning: unrecognized command line option ‘-Wno-parentheses-equality’ cc1plus: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ /usr/bin/ld: cannot find -lortools collect2: error: ld returned 1 exit status checked program was: / begin / 1: #include "ruby.h" 2: 3: /top/ 4: extern int t(void); 5: int main(int argc, char *argv) 6: { 7: if (argc > 1000000) { 8: int ( volatile tp)(void)=(int ()(void))&t; 9: printf("%d", (tp)()); 10: } 11: 12: return 0; 13: } 14: 15: int t(void) { ; return 0; } / end /

Could you help me with??

I`m using pop os 21.04 as OS.

Thanks.

ankane commented 3 years ago

Hey @viniciuscurti, for Pop!_OS, you'll need to build the OR-Tools C++ library from source, then run:

bundle config build.or-tools --with-or-tools-dir=/path/to/or-tools
viniciuscurti commented 3 years ago

Hi @ankane !

Thanks for the help, but i still facing a problem.

After done the or-tools instaltion from source, done the bundle config build to the correct path an then run bundle again to install the gem is now getting this error message:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory: /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/or-tools-0.3.4/ext/or-tools

/home/viniciuscurti/.rbenv/versions/2.6.3/bin/ruby -I /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/2.6.0 -r ./siteconf20210723-238374-j700b1.rb extconf.rb --with-or-tools-dir\=/usr/lib/or-tools /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rice-4.0.2/lib/mkmf-rice.rb:16: warning: already initialized constant MakeMakefile::CONFTEST_C /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/2.6.0/mkmf.rb:259: warning: previous definition of CONFTEST_C was here checking for rice/rice.hpp in /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rice-4.0.2/include... yes checking for -lstdc++... yes checking for -lstdc++... yes checking for -lortools... yes creating Makefile

current directory: /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/or-tools-0.3.4/ext/or-tools make "DESTDIR=" clean

current directory: /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/or-tools-0.3.4/ext/or-tools make "DESTDIR=" compiling ext.cpp cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-int’ is valid for C/ObjC but not for C++ ext.cpp:2:10: fatal error: ortools/algorithms/knapsack_solver.h: No such file or directory 2 | #include <ortools/algorithms/knapsack_solver.h> | ^~~~~~~~~~ compilation terminated. make: *** [Makefile:236: ext.o] Error 1

make failed, exit code 2

Gem files will remain installed in /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/or-tools-0.3.4 for inspection. Results logged to /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/extensions/x86_64-linux/2.6.0/or-tools-0.3.4/gem_make.out

An error occurred while installing or-tools (0.3.4), and Bundler cannot continue. Make sure that gem install or-tools -v '0.3.4' --source 'https://rubygems.org/' succeeds before bundling.

In Gemfile: or-tools

Any suggestion with what i might do to solve?

Thanks again for the usefull tip to install.

viniciuscurti commented 3 years ago

And now i`m facing this error after taking a suggetion from another issue to install or-tools on usr/lib than run ldconfig -v.

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory: /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/or-tools-0.3.4/ext/or-tools

/home/viniciuscurti/.rbenv/versions/2.6.3/bin/ruby -I /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/2.6.0 -r ./siteconf20210723-249203-1nhwy61.rb extconf.rb --with-or-tools-dir\=/usr/lib/or-tools /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rice-4.0.2/lib/mkmf-rice.rb:16: warning: already initialized constant MakeMakefile::CONFTEST_C /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/2.6.0/mkmf.rb:259: warning: previous definition of CONFTEST_C was here checking for rice/rice.hpp in /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rice-4.0.2/include... yes checking for -lstdc++... yes checking for -lstdc++... yes checking for -lortools... yes creating Makefile

current directory: /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/or-tools-0.3.4/ext/or-tools make "DESTDIR=" clean

current directory: /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/or-tools-0.3.4/ext/or-tools make "DESTDIR=" compiling ext.cpp cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++ cc1plus: warning: command line option ‘-Wimplicit-int’ is valid for C/ObjC but not for C++ ext.cpp:2:10: fatal error: ortools/algorithms/knapsack_solver.h: No such file or directory 2 | #include <ortools/algorithms/knapsack_solver.h> | ^~~~~~~~~~ compilation terminated. make: *** [Makefile:236: ext.o] Error 1

make failed, exit code 2

Gem files will remain installed in /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/or-tools-0.3.4 for inspection. Results logged to /home/viniciuscurti/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/extensions/x86_64-linux/2.6.0/or-tools-0.3.4/gem_make.out

An error occurred while installing or-tools (0.3.4), and Bundler cannot continue. Make sure that gem install or-tools -v '0.3.4' --source 'https://rubygems.org/' succeeds before bundling.

In Gemfile: or-tools

ankane commented 3 years ago

Try the following:

  1. Use the latest version of the gem (0.5.2)
  2. Use the latest version of the C++ library (9.0)
  3. Paste the output of find /path/to/or-tools/lib and find /path/to/or-tools/include (after compiling the C++ library)