biblioteheken dazulinken



  • mollitz schrieb:

    hier mal den aufruf und die dateinen!

    root@Moritz-Linux:/home/mollitz/Projekte/sqlite# ls
    libsqlite3.so  main.cpp  sqlite3.h
    root@Moritz-Linux:/home/mollitz/Projekte/sqlite# g++ main.cpp -libsqlite3.so
    

    Ich sagte ja auch -lsqlite3 und nicht -libsqlite3.so

    Sollte dann so aussehen:

    root@Moritz-Linux:/home/mollitz/Projekte/sqlite# g++ main.cpp -lsqlite3
    

    kein .so hinten dran, kein lib davor und -l... (l wie library)



  • @ mollitz

    Wenn du dir mal die Mühe machen würdest meine Beiträge ordentlich zu lesen, dann hättest du schon eine Antwort auf deine Frage gefunden.
    Ich habe in deinem Beitrag aus dem Datenbankforum bereits geschrieben:

    basti33 schrieb:

    Jetzt die Header nach /usr/include und die Bibliothek nach /usr/lib kopieren und dann kannst du dein Programm mit dem Befehl

    g++ Quelldatei.cpp -o Programm -lsqlitewrapped -lpthread -dld
    

    kompilieren.

    Aufpassen ist manchmal echt sinnvoll 😉 .

    Gruß



  • g++ foo.cpp -L. -lsqlite3

    mit -L gibt man den Pfad an wo die Libraries gesucht werden (siehe GCC-Handbuch gcc.gnu.org) und dann

    LD_LIBRARY_PATH="$LD_LIBRARY_PATH:." ./a.out

    um das Programm zu starten (oder LD_LIBRARY_PATH gleich richtig setzen oder die library richtig installieren).



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • @helium:

    habs auch schon mal mit der ersten methode probiert! (hat auch nicht getan)
    woher weiss er mit -lsqlite3 eigentlich, was er da einbinden soll?
    der fehler dabei ist, dass er die datei nicht -lsqlite3 nicht finden kann!

    @basti:

    habs hier mal ohne den wrapper probiert (der lässt sich nämlich nicht kompilieren (ich geb dir die fehlermeldung im anderen thread))

    so da war noch der vorschlag: (gleich mit fehler)

    mollitz@Moritz-Linux:~/Projekte/sqlite$ ls
    libsqlite3.so  main.cpp  main.cpp~  sqlite3.h
    mollitz@Moritz-Linux:~/Projekte/sqlite$ g++ main.cpp -L. -lsqlite3
    ./libsqlite3.so: undefined reference to `pthread_key_create'
    ./libsqlite3.so: undefined reference to `dlsym'
    ./libsqlite3.so: undefined reference to `pthread_getspecific'
    ./libsqlite3.so: undefined reference to `pthread_create'
    ./libsqlite3.so: undefined reference to `dlopen'
    ./libsqlite3.so: undefined reference to `pthread_setspecific'
    ./libsqlite3.so: undefined reference to `dlclose'
    ./libsqlite3.so: undefined reference to `pthread_join'
    collect2: ld gab 1 als Ende-Status zurück
    


  • OK, liegt aber daran, dass du die lib nicht anständig installiert hast. rüdiger hat gesagt, wie du das mit deinem zusätzlichen LIB-Pfad hinbekommst (-L.) und basti33 hat dir gezeigt, was du sonst noch so brauchst.



  • aber den lib pfad muss ich doch bloss zum starten des programmes setzen! und checkts der nicht, dass er des einfach ausm gleichen pfad nehmen soll.?



  • rüdiger schrieb:

    oder die library richtig installieren



  • Helium schrieb:

    rüdiger schrieb:

    oder die library richtig installieren

    aber wie installiere ich die library richtig (welcher Pfad)
    und was ändert das?
    Er wird weiterhin einen Kompiler-Fehler auslösen. Oder nicht?



  • Normalerweise reicht doch der standard

    ./configure
    make
    make install
    

    make isntall braucht root-Rechte.



  • mollitz schrieb:

    so da war noch der vorschlag: (gleich mit fehler)

    mollitz@Moritz-Linux:~/Projekte/sqlite$ ls
    libsqlite3.so  main.cpp  main.cpp~  sqlite3.h
    mollitz@Moritz-Linux:~/Projekte/sqlite$ g++ main.cpp -L. -lsqlite3
    ./libsqlite3.so: undefined reference to `pthread_key_create'
    ./libsqlite3.so: undefined reference to `dlsym'
    ./libsqlite3.so: undefined reference to `pthread_getspecific'
    ./libsqlite3.so: undefined reference to `pthread_create'
    ./libsqlite3.so: undefined reference to `dlopen'
    ./libsqlite3.so: undefined reference to `pthread_setspecific'
    ./libsqlite3.so: undefined reference to `dlclose'
    ./libsqlite3.so: undefined reference to `pthread_join'
    collect2: ld gab 1 als Ende-Status zurück
    

    Du musst wohl noch -pthread setzen um Threading zu aktivieren. Aber eigentlich sollte das alles in der SQLite-Docu stehen. Ansonsten gibt es vielleicht eine pkg-config-Unterstützung.



  • g++ main.cpp -L. -lsqlite3 -lpthread -ldl
    

    Die letzten beiden hätte man aber auch locker ergooglen können... 🙄



  • LordJaxom schrieb:

    g++ main.cpp -L. -lsqlite3 -lpthread -ldl
    

    Die letzten beiden hätte man aber auch locker ergooglen können... 🙄

    Ich hab ihm das jetzt schon mehrmals beschrieben, aber anscheinend ist mollitz ein bisschen beschränkt.



  • jaja sry,
    bin noch nicht solange in linux und so und habe bisher alles mit ide's gemacht.
    ich find halt nirgends im inet ein gscheides tutorial wo man den ganzen compiler-scheiss lernt!


Anmelden zum Antworten