【问题标题】:Compiling the SCIP Optimization Suite 3.2.0 on Linux在 Linux 上编译 SCIP 优化套件 3.2.0
【发布时间】:2015-07-04 23:06:38
【问题描述】:

在 linux, CentOS 6.4 (Final) 上编译 scipsuite 时,我收到以下错误:

-> 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 版本是 4.4.7

我试过了:

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

我已经安装了 GMP、ZLIB 和 READLINE 库,以及它们的开发库。

有什么建议吗?

【问题讨论】:

    标签: linux scip


    【解决方案1】:

    如果你想用gcc 4.4.7 编译SoPlex,你肯定需要设置LEGACY=true(在SCIP 中你需要指定SPX_LEGACY=true)。如果您在 SCIP 优化套件(推荐)中编译代码,LEGACY=true 选项将相应地编译 SCIP 和 SoPlex。

    关于spxsolver.h中的另一个错误:第383行,请替换

    SPxLPBase::spxout = &newOutstream;
    

    SPxLP::spxout = &newOutstream;
    

    显然,gcc 的较新版本在不指定模板说明符的情况下不会抱怨这种用法(SPxLP 实际上是 SPxLPBase &lt;Real&gt;)。

    【讨论】:

    • SCIP Opt Suite Makefile 中也可能存在缺陷。您还应该尝试分别编译 SoPlex 和 SCIP,并如上所述设置 LEGACY 标志。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 2012-03-24
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2015-01-14
    相关资源
    最近更新 更多