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 🙂


Anmelden zum Antworten