我正在尝试针对 wxWidgets 构建程序,但出现链接器错误。我想真正理解它的含义。错误是:
/usr/lib/libwx_baseu-2.8.so: undefined reference to `std::ctype<char>::_M_widen_init() const@GLIBCXX_3.4.11'
我不明白为什么错误出现在libwx_baseu-2.8.so
. 我认为.so
文件的所有符号都已解析,这与.o
仍需要链接的文件相反。
当我ldd
,.so
我可以解析其所有链接库,所以那里没有问题:
$ ldd /usr/lib/libwx_baseu-2.8.so
linux-gate.so.1 => (0x00476000)
libz.so.1 => /lib/libz.so.1 (0x00d9c000)
libdl.so.2 => /lib/libdl.so.2 (0x002a8000)
libm.so.6 => /lib/libm.so.6 (0x00759000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x002ad000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0068d000)
libpthread.so.0 => /lib/libpthread.so.0 (0x006f0000)
libc.so.6 => /lib/libc.so.6 (0x00477000)
/lib/ld-linux.so.2 (0x007f6000)
这是否意味着该.so
文件未正确编译(在这种情况下,这是我的分发包中的一个错误)还是意味着我的特定程序的链接器命令行上缺少库?
此外,您知道如何获取 ELF 文件中未定义符号的列表吗?我试过readelf -s
了,但我找不到丢失的符号。
谢谢你。
米尔德里德