Estoy tratando de construir un programa contra wxWidgets, y me sale un error de enlazador. Me gustaría realmente entender lo que significa. El error es:ELF: linking: ¿Por qué obtengo referencias indefinidas en .so archivos
/usr/lib/libwx_baseu-2.8.so: undefined reference to `std::ctype<char>::_M_widen_init() [email protected]_3.4.11'
Lo que no entiendo es por eso que el error está en libwx_baseu-2.8.so
. Pensé que los archivos .so
tenían todos sus símbolos resueltos, al contrario de los archivos .o
que aún necesitan vincularse.
Cuando ldd
la .so
, consigo puede resolver todas sus bibliotecas enlazadas, así que no hay problema allí:
$ 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)
Qué significa que el archivo .so
no fue compilado correctamente (en ese caso, es un error en mi paquete de distribución) o significa que faltan bibliotecas en la línea de comando del enlazador para mi programa en particular?
Además, ¿sabes cómo puedo obtener una lista de símbolos indefinidos en un archivo ELF. Intenté readelf -s
pero no puedo encontrar el símbolo que falta.
Gracias.
Mildred
Si tiene un problema al vincular, podría ser útil si publicó la línea de comando del vinculador exacto. – ndim