Я пытаюсь создать программу для 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
, но не могу найти пропущенный символ.
Спасибо.
Милдред