如何构建和运行Concorde TSP求解器

时间:2013-12-12 23:33:36

标签: c++ ubuntu compiler-construction codeblocks cplex

我正在用C ++创建一个代码,该代码使用一个名为Concorde的库来解决一个众所周知的问题,称为旅行商问题。该库可用here

我首先运行./configure --with-cplex=<CPLEX_DIR>然后make编译,产生两个主文件concorde.aconcorde.h。通过这种方式,concorde被配置为运行并使用IBM Cplex作为精确求解器。

我正在使用Code :: Blocks作为IDE,在构建选项中,我在concorde.a下添加了库(Link libraries),并在我的代码中包含了标题。

然而,当我尝试编译我的代码时,它给了我错误,表明它无法找到我调用的并且在concorde.h文件中定义的concorde函数的实现。在这种情况下,错误为"undefined reference to <function>"

任何人都可以帮助我吗?

代码块的构建日志的最后一部分如下:

    g++ -L/opt/ibm/ILOG/CPLEX_Studio1251/cplex/lib/x86-64_sles10_4.1/static_pic 
    -L/opt/ibm/ILOG/CPLEX_Studio1251/concert/lib/x86-64_sles10_4.1/static_pic 
    -L/opt/concorde  -o bin/Debug/SVRPDSP obj/Debug/instance.o obj/Debug/lib/combo.o 
    obj/Debug/lib/IncumbentCallback2C.o obj/Debug/lib/lazyCallback2C.o 
    obj/Debug/lib/lazyCallbackGLS.o obj/Debug/lib/lib_algorithms.o 
    obj/Debug/lib/lib_general.o obj/Debug/solution.o   -lrt  -lilocplex -lcplex 
    -lconcert -lm -lpthread    /opt/concorde/concorde.a 

ps:我正在编译Ubuntu 13.10

感谢。

1 个答案:

答案 0 :(得分:0)

首先:协和版不支持CPLEX 12.5 我已下载QSopt并已启动./configure --with-qsopt=QSOPT_DIR 最后,libs的顺序如下:

-lilocplex -lconcert -lcplex /opt/concorde/concorde.a /opt/QS/qsopt.a -lm -lpthread