Você pode me dizer como posso resolver esse erro de ‘referência indefinida’ ao vincular no Ubuntu 10.10
conftest.c:(.text+0x4): referência indefinida para `glib_major_version'
conftest.c:(.text+0xd): referência indefinida para `glib_minor_version'
conftest.c:(.text+0x16): referência indefinida para `glib_micro_version'
collect2: ld retornou 1 status de saída
Eu adicionei 'export LD_LIBRARY_PATH=/usr/lib:/lib:$LD_LIBRARY_PATH' ao meu .bashrc.
$ ls -la libgl*.*
lrwxrwxrwx 1 raiz raiz 23 17/12/2010 18:29 libglib-2.0.so.0 -> libglib-2.0.so.0.2600.0
-rw-r--r-- 1 raiz raiz 842208 27/09/2010 16:16 libglib-2.0.so.0.2600.0
/lib $ pwd
/lib
Mas isso não resolve o problema. O que devo fazer?
Responder1
Qual comando você está executando para compilá-lo?
Existem outros erros que levaram a esse erro?
Eu tenho a mesma versão do arquivo que você e contém esses 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
Você está compilando seu próprio programa? Talvez você só precise dizer ao vinculador para vincular glib
adicionando a -lglib-2.0
opção.
Se você estiver executando o
gcc -o conftest conftest.c
, você deve fazê-lo
gcc -o conftest -lglib-2.0 conftest.c
.
Ou você pode -lglib-2.0
adicionar LDFLAGS
.
Você está compilando o programa de outra pessoa? Pode estar usando pkgconfig
. Pode haver algumas coisas /usr/local
que estão confundindo as coisas.
Você mesmo instalou algum outro programa ou biblioteca? Talvez algo que se instalou /usr/local/lib
?
O que cat /usr/lib/pkgconfig/glib*
diz?
O que cat /usr/local/lib/pkgconfig/glib*
diz?
Talvez seja necessário alterar o valor de LD_LIBRARY_PATH
para incluir /usr/local/lib
, ou talvez alterar PKG_CONFIG_PATH
ou adicionar algumas opções a ./configure
.
A resposta depende do que você está fazendo.