Einbinden einer externen Bibliothek unter KDevelop



  • Hi!

    Ich möchte unter KDevelop in ein eigenes Programm eine Bibliothek einbinden. Die Bibliothek befindet sich unter:

    calvin@mars:/usr/local/lib$ ls -lA
    -rwxrwxrwx 1 root root  113417 2009-01-16 20:39 libK8061-1.0.so.1.0.0
    -rwxr-xr-x 1 root root     832 2009-01-16 20:39 libK8061.la
    lrwxrwxrwx 1 root root      21 2009-01-16 20:39 libK8061.so -> libK8061-1.0.so.1.0.0
    

    Die Include Datei befindet sich unter:

    calvin@mars:/usr/local/include$ ls -lA
    -rw-r--r-- 1 root root 27341 2009-01-16 20:39 k8061.h
    

    In meinem Programm main.cpp habe ich die Header-Datei mit

    #include "k8061.h"
    

    eingebunden.

    Unter KDevelop habe ich unter Projekt -> Projekt-Einstellungen -> Einstellungen für Configure folgendes angegeben.
    CPPFLAGS="-I /usr/local/include"
    LDFLAGS="-L /usr/local/lib -l libK8061.so"

    Das Programm bricht mit dem Fehlercode 77 ab. In der config.log findet sich folgendes von Interesse.

    configure:2336: checking for C++ compiler default output file name
    configure:2363: g++ -O0 -g3 -I /usr/local/include -L /usr/local/lib -l libK8061.so conftest.cpp  >&5
    /usr/bin/ld: cannot find -llibK8061.so
    collect2: ld returned 1 exit status
    configure:2366: $? = 1
    configure:2404: result: 
    configure: failed program was:
    

    Ich habe keine Ahnung warum es nicht funktioniert. Könnt ihr mir helfen?

    Vielen Dank,
    Calvin



  • CalvinB schrieb:

    /usr/bin/ld: cannot find -llibK8061.so
    

    Daß alle dynamischen Bibliotheken mit "lib" anfangen und auf ".so" enden weiß der Linker selbst, das muß/darf man in den Compilerflags nicht dazu schreiben. In deinen LDFLAGS sollte also statt "-l libK8061.so" einfach nur "-lK8061" stehen, dann wird die Bibliothek auch gefunden.



  • Daß alle dynamischen Bibliotheken mit "lib" anfangen und auf ".so" enden weiß der Linker selbst, das muß/darf man in den Compilerflags nicht dazu schreiben.

    Das glaube ich schon das das der Compiler weiß, ich habe es aber nicht gewusst.
    Herzlichen Dank, jetzt funktioniert es! Das hätte ich alleine nie herausgefunden.

    Danke und lg
    Calvin


Log in to reply