include -> Maschinencode
-
Hallo Forum,
ich würde gern die Bibliothek log4c verwenden, also habe ich die samt dev-Paket mit Synaptic installiert. Das Kompilieren geht super, aber der Linker bringt folgende Fehlermeldung:
Building target: Learn Invoking: GCC C Linker gcc -o"Learn" ./src/Learn.o ./src/example.o ./src/mylist.o ./src/test.o ./src/test.o: In function `main': /home/eric/Development/c_workspace/Learn/Debug/../src/test.c:16: undefined reference to `log4c_init' collect2: ld gab 1 als Ende-Status zurück make: *** [Learn] Fehler 1
Meine Interpretation: Der Maschinencode in /usr/lib/liblog4c.so.3.1.0 kann nicht damit verknüpft werden. Woher weiss das System welche Maschinencodedatei zu welchem Header gehört? Wie kann ich das Problem lösen?
Grüße Eric
PS: Ubuntu 8.10 / eclipse Ganymede
-
Der Compiler weiß das nicht, daher musst du ihm sagen, welche Library er linken soll. Das geht mit -l<libname> (wobei <libname> entspricht lib<libname>.so...).
Siehe auch http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/Link-Options.html#Link-Options.
-
Ich habe die entsprechenden Optionen unter "Projekt/Properties/C/C++Builder/Settings/Tool Settings" gefunden. Der Linkeraufruf ändert sich zwar, bekomme aber trotzdem eine Fehlermeldung.
Invoking: GCC C Linker gcc -o"Learn" ./src/Learn.o ./src/example.o ./src/mylist.o ./src/test.o -lliblog4c.a /usr/bin/ld: cannot find -lliblog4c.a
Habe beim Libnamen auch vieles durchprobiert. Hab auch mit -L das Verzeichnis noch mal angegeben. Hat jemand noch einen Tipp?
-
Nur -llog4c und nicht das lib....a (wie ich auch in meiner Beschreibung erwähnt hatte).
-
aha, jetzt geht's