0

When compiling scipsuite on linux, CentOS 6.4 (Final), I receive these errors:

-> compiling obj/O.linux.x86_64.gnu.opt/lib/objscip/objmessagehdlr.o
-> compiling obj/O.linux.x86_64.gnu.opt/lib/objscip/objnodesel.o
-> compiling obj/O.linux.x86_64.gnu.opt/lib/objscip/objpresol.o
-> compiling obj/O.linux.x86_64.gnu.opt/lib/objscip/objpricer.o
-> compiling obj/O.linux.x86_64.gnu.opt/lib/objscip/objprobdata.o
-> compiling obj/O.linux.x86_64.gnu.opt/lib/objscip/objprop.o
-> compiling obj/O.linux.x86_64.gnu.opt/lib/objscip/objreader.o
-> compiling obj/O.linux.x86_64.gnu.opt/lib/objscip/objrelax.o
-> compiling obj/O.linux.x86_64.gnu.opt/lib/objscip/objsepa.o
-> compiling obj/O.linux.x86_64.gnu.opt/lib/objscip/objvardata.o
-> generating library lib/libobjscip-3.2.0.linux.x86_64.gnu.opt.a
-> compiling obj/O.linux.x86_64.gnu.opt/lib/lpi/lpi_spx.o
In file included from lib/spxinc/basevectors.h:30,
                 from lib/spxinc/spxlpbase.h:34,
                 from lib/spxinc/spxlp.h:24,
                 from lib/spxinc/spxsolver.h:30,
                 from src/lpi/lpi_spx.cpp:76:
lib/spxinc/rational.h:133: error: only declarations of constructors can be ‘explicit’
lib/spxinc/rational.h:136: error: only declarations of constructors can be ‘explicit’
In file included from src/lpi/lpi_spx.cpp:76:
lib/spxinc/spxsolver.h: In member function ‘void     soplex::SPxSolver::setOutstream(soplex::SPxOut&)’:
lib/spxinc/spxsolver.h:383: error: ‘template<class R> class     soplex::SPxLPBase’ used without template parameters
make[1]: *** [obj/O.linux.x86_64.gnu.opt/lib/lpi/lpi_spx.o] Error 1

gcc is version is 4.4.7

I've tried:

make
make LEGACY=true
make ZLIB=false GMP=false READLINE=false LPSOPT=opt-gccold OPT=opt-gccold

I have installed GMP, ZLIB, and READLINE libraries, as well as their development libraries.

Any suggestions?

mattmilten
  • 6,242
  • 3
  • 35
  • 65

1 Answers1

0

If you want to compile SoPlex with gcc 4.4.7 you definitely need to set LEGACY=true (in SCIP you need to specify SPX_LEGACY=true). If you're compiling the code within the SCIP Optimization Suite (recommended) the option LEGACY=true will compile both SCIP and SoPlex accordingly.

Concerning the other error in spxsolver.h: In line 383, please replace

SPxLPBase::spxout = &newOutstream;

with

SPxLP::spxout = &newOutstream;

Apparently, newer versions of gcc don't complain about this usage without specifying the template specifier (SPxLP is actually SPxLPBase <Real>).

mattmilten
  • 6,242
  • 3
  • 35
  • 65
  • There may also be a flaw in the SCIP Opt Suite Makefile. You should also try to compile SoPlex and SCIP separately, with the LEGACY flags set as described above. – mattmilten Jul 07 '15 at 09:24