Подскажите, пожалуйста, как устранить ошибку «неопределенная ссылка» при компоновке в Ubuntu 10.10?
conftest.c:(.text+0x4): неопределенная ссылка на `glib_major_version'
conftest.c:(.text+0xd): неопределенная ссылка на `glib_minor_version'
conftest.c:(.text+0x16): неопределенная ссылка на `glib_micro_version'
collect2: ld вернул 1 статус выхода
Я добавил «export LD_LIBRARY_PATH=/usr/lib:/lib:$LD_LIBRARY_PATH» в свой .bashrc.
$ ls -la libgl*.*
lrwxrwxrwx 1 корень корень 23 2010-12-17 18:29 libglib-2.0.so.0 -> libglib-2.0.so.0.2600.0
-rw-r--r-- 1 корень корень 842208 2010-09-27 16:16 libglib-2.0.so.0.2600.0
/lib $ пароль
/lib
Но это не решает проблему. Что мне делать?
решение1
Какую команду вы запускаете для компиляции?
Есть ли другие ошибки, приводящие к этой ошибке?
У меня такая же версия файла, как у вас, и в ней есть эти символы.
$ 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
Вы компилируете свою собственную программу? Возможно, вам просто нужно указать компоновщику, что нужно выполнить компоновку, glib
добавив -lglib-2.0
опцию.
Если вы бегаете
gcc -o conftest conftest.c
, вам следует сделать
gcc -o conftest -lglib-2.0 conftest.c
вместо этого.
Или вы можете добавить -lglib-2.0
в LDFLAGS
.
Вы компилируете чужую программу? Она может использовать pkgconfig
. В ней может быть что-то, /usr/local
что сбивает с толку.
Вы сами устанавливали какие-то другие программы или библиотеки? Возможно, что-то, что само себя установило в /usr/local/lib
?
Что cat /usr/lib/pkgconfig/glib*
говорит?
Что cat /usr/local/lib/pkgconfig/glib*
говорит?
Возможно, вам придется изменить значение , LD_LIBRARY_PATH
включив его /usr/local/lib
, или изменить PKG_CONFIG_PATH
или добавить некоторые параметры в ./configure
.
Ответ зависит от того, что вы делаете.