Können Sie mir bitte sagen, wie ich diesen Fehler „undefinierte Referenz“ beim Verknüpfen unter Ubuntu 10.10 beheben kann?
conftest.c:(.text+0x4): undefinierter Verweis auf „glib_major_version“
conftest.c:(.text+0xd): undefinierter Verweis auf „glib_minor_version“
conftest.c:(.text+0x16): undefinierter Verweis auf „glib_micro_version“
collect2: ld hat 1 Exit-Status zurückgegeben
Ich habe „export LD_LIBRARY_PATH=/usr/lib:/lib:$LD_LIBRARY_PATH“ zu meiner .bashrc hinzugefügt.
$ ls -la libgl*.*
lrwxrwxrwx 1 Wurzel Wurzel 23 2010-12-17 18:29 libglib-2.0.so.0 -> libglib-2.0.so.0.2600.0
-rw-r--r-- 1 Wurzel Wurzel 842208 2010-09-27 16:16 libglib-2.0.so.0.2600.0
/lib $ pwd
/lib
Das Problem ist damit aber nicht gelöst. Was soll ich tun?
Antwort1
Welchen Befehl führen Sie aus, um es zu kompilieren?
Gibt es noch andere Fehler, die zu diesem Fehler geführt haben?
Ich habe dieselbe Version der Datei wie Sie und sie enthält diese Symbole.
$ 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
Kompilieren Sie Ihr eigenes Programm? Vielleicht müssen Sie dem Linker nur sagen, dass er eine Verknüpfung herstellen soll, glib
indem Sie die -lglib-2.0
Option hinzufügen.
Wenn Sie ausführen
gcc -o conftest conftest.c
, sollten Sie
gcc -o conftest -lglib-2.0 conftest.c
stattdessen Folgendes tun.
Oder Sie können -lglib-2.0
hinzufügen LDFLAGS
.
Kompilieren Sie das Programm einer anderen Person? Es könnte verwendet werden pkgconfig
. Es könnte darin Dinge geben, /usr/local
die verwirrend sind.
Haben Sie selbst andere Programme oder Bibliotheken installiert? Vielleicht etwas, das sich selbst installiert hat /usr/local/lib
?
Was cat /usr/lib/pkgconfig/glib*
sagt man?
Was cat /usr/local/lib/pkgconfig/glib*
sagt man?
Möglicherweise müssen Sie den Wert von ändern , LD_LIBRARY_PATH
um einzuschließen /usr/local/lib
, oder vielleicht ändern PKG_CONFIG_PATH
oder einige Optionen zu hinzufügen ./configure
.
Die Antwort hängt davon ab, was Sie tun.