我試圖針對wxWidgets構建一個程序,並且出現鏈接器錯誤。我想真正理解它的含義。錯誤是:ELF:鏈接:爲什麼我在.so文件中獲取未定義的引用
/usr/lib/libwx_baseu-2.8.so: undefined reference to `std::ctype<char>::_M_widen_init() [email protected]_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
,但我找不到缺失的符號。
謝謝。
米爾德里德
如果在鏈接時遇到問題,那麼發佈確切的鏈接器命令行可能會有幫助。 – ndim 2010-04-15 09:55:10