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.
-
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!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!