1

我正在尝试在 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 [...]

我该如何修复/调试这个?

4

1 回答 1

1

添加-v -Wl,-v到标志后,我可以看到 和 的命令collect2ld

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

于 2013-07-02T11:59:04.977 回答