链接器不想使用libexpat.so(未定义的符号)

时间:2013-07-01 14:48:49

标签: linker

我正在尝试在Kubuntu 12.04中编译一个程序(不是由我编写的),它失败了以下内容:

/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libwx_baseu_xml-2.8.so: undefined reference to symbol 'XML_SetUserData'
/usr/bin/ld: note: 'XML_SetUserData' is defined in DSO /usr/lib/x86_64-linux-gnu/libexpat.so so try adding it to the linker command line
/usr/lib/x86_64-linux-gnu/libexpat.so: could not read symbols: Invalid operation
collect2: ld returned 1 exit status

我修复了Makefile中的一些错误,但我仍然不明白这里有什么问题,因为命令行包含-lexpat,显然位于正确的位置:

g++ [...] -L/usr/lib/x86_64-linux-gnu [...] -lwx_baseu_xml-2.8 [...] -lm -lexpat [...]

我如何修复/调试这个?

1 个答案:

答案 0 :(得分:1)

-v -Wl,-v添加到标记后,我可以看到collect2ld的命令行。

出于某种原因,原始Makefile将库(-L-l选项)放在大多数目标文件之前。我把库放在命令行的末尾,然后编译。