【问题标题】:Concorde installation : need to link an lp solver to use this functionConcorde 安装:需要链接一个 lp 求解器才能使用此功能
【发布时间】:2018-01-16 15:17:13
【问题描述】:

我一直在尝试在 Cygwin 上安装 Concorde 的 TSP 求解器,但我遇到了一些困难: 我在官网下载了Qsopt,“Cygwin”部分的两个文件,放在/home/qs.然后,我下载了 concorde、gunzip、tar,这样我就有了 /home/concorde。我进入这个文件夹并输入“./configure --with-qsopt=/home/qs”。一切似乎都很顺利,所以我输入“make”,这就是我所得到的(像这样的几行):

/home/concorde/LP/lpqsopt.c:645 : undefined reference « QSget_param »
/home/concorde/LP/lpqsopt.c:674 : undefined reference « QSset_param »
/home/concorde/LP/lpqsopt.c:650 : undefined reference « QSset_param »
/home/concorde/LP/lpqsopt.c:655 : undefined reference « QSopt_dual »

您知道如何解决这个问题吗?我没有在网上找到任何东西。 (我有 automake 1.15)

产生此错误的命令似乎是:

gcc -fPIC -O2 -g  -o concorde concorde.o tsp.a ../PQ/pq.a ../VERIFY/verify.a ../LOCALCUT/localcut.a   ../TINY/tiny.a ../LINKERN/linkern.a   ../EDGEGEN/edgegen.a ../KDTREE/kdtree.a     ../FMATCH/fmatch.a ../UTIL/util.a ../BIGGUY/bigguy.a     ../CUT/cut.a ../HELDKARP/heldkarp.a ../LP/lp.a ../COMBS/combs.a /home/qs/qsopt.a -liberty -lm ../LP/lp.a(lpqsopt.o)

然后如你所见,错误似乎来自 LP

非常感谢, 贾祖利

【问题讨论】:

  • 你能发布失败的实际命令吗?解决问题会更容易。我可以找到一个 可能 是您要构建的 git 存储库,但我不确定构建树的哪个部分失败了。
  • 您好,很抱歉回复晚了,我编辑了我的帖子,希望这是您想要的!非常感谢!

标签: c++ cygwin configure automake np-complete


【解决方案1】:

所以我找到了源代码,看起来问题出在TSP/Makefile.in

问题在于链接编辑器 (ld) 的参数是位置性的:目标文件(和便利的静态档案)需要位于它们链接到的库之前。

在这种情况下,最后传递了../LP/lp.a(lpqsopt.o) 的第二个实例,并且没有给出任何链接。我不确定那是从哪里来的。构建系统很难找出错误的来源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 2022-06-10
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    相关资源
    最近更新 更多