¿Puede decirme cómo puedo resolver este error de 'referencia indefinida' al vincular en Ubuntu 10.10?
conftest.c:(.text+0x4): referencia no definida a `glib_major_version'
conftest.c:(.text+0xd): referencia no definida a `glib_minor_version'
conftest.c:(.text+0x16): referencia no definida a `glib_micro_version'
Collect2: ld devolvió 1 estado de salida
He agregado 'exportar LD_LIBRARY_PATH=/usr/lib:/lib:$LD_LIBRARY_PATH' a mi .bashrc.
$ ls -la libgl*.*
lrwxrwxrwx 1 raíz raíz 23 2010-12-17 18:29 libglib-2.0.so.0 -> libglib-2.0.so.0.2600.0
-rw-r--r-- 1 raíz raíz 842208 2010-09-27 16:16 libglib-2.0.so.0.2600.0
/lib$contraseña
/lib
Pero eso no resuelve el problema. ¿Qué tengo que hacer?
Respuesta1
¿Qué comando estás ejecutando para compilarlo?
¿Hay otros errores que conduzcan a este error?
Tengo la misma versión del archivo que tú y tiene esos símbolos.
$ ls -l libglib*
lrwxrwxrwx 1 root root 23 2010-12-05 06:03 libglib-2.0.so.0 -> libglib-2.0.so.0.2600.0
-rw-r--r-- 1 root root 842208 2010-09-28 09:16 libglib-2.0.so.0.2600.0
$ nm -D libglib-2.0.so.0.2600.0 | grep version
00073730 T glib_check_version
000c849c R glib_major_version
000c84a4 R glib_micro_version
000c84a0 R glib_minor_version
¿Estás compilando tu propio programa? Quizás solo necesite decirle al vinculador que se vincule glib
agregando la -lglib-2.0
opción.
Si estás ejecutando
gcc -o conftest conftest.c
, deberías hacerlo
gcc -o conftest -lglib-2.0 conftest.c
en su lugar.
O puedes agregar -lglib-2.0
a LDFLAGS
.
¿Estás compilando el programa de otra persona? Podría estar usando pkgconfig
. Puede haber algunas cosas /usr/local
que sean confusas.
¿Instalaste otros programas o bibliotecas tú mismo? ¿Quizás algo que se instaló solo /usr/local/lib
?
¿Qué cat /usr/lib/pkgconfig/glib*
dice?
¿Qué cat /usr/local/lib/pkgconfig/glib*
dice?
Es posible que deba cambiar el valor de LD_LIBRARY_PATH
para incluirlo /usr/local/lib
, o quizás cambiarlo PKG_CONFIG_PATH
o agregarle algunas opciones ./configure
.
La respuesta depende de lo que estés haciendo.