g++ erklären das da ne lib ist
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) 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.
-
schön und gut, dann habe ich eine ausführbare datei die aber beim ausführen sagt, das es die gelinkte bibliothek nicht finden kann!
Ich bin nicht dumm, und google ist kein Fremdwort, aber da wird nur davon gereded das man die lib nach /usr/lib oder /usr/local/lib pasten muss bzw eine etc/lib.conf datei verändern soll.
Da ich aber keins davon machen will (mein Programm soll mit str+c str+v auf einem anderen Linux/Ubuntu System übertragbar sein), muss ich die libs eben mit einem Ordner rumschleppen. Nur wie erkläre ich sowohl compiler als auch post-compilierten Programm das es DIESE bibliothek benutzen soll und zwar in folgendem ordner ../lib (o.ä.)
-
edit: Oder in Kurzform: Dann kannst du den Pfad nochmals mit -R angeben.
-
LD_RUN_PATH scheint die richtige spur zu sein, aber da steht das geht nur mit absoluten Pfadangaben, das ist eher ungünstig bei dem Lösungschema was ich anstrebe. Geht meine idee denn überhaupt mit dynamischen bibliotheken?
-
Jud4s schrieb:
LD_RUN_PATH scheint die richtige spur zu sein, aber da steht das geht nur mit absoluten Pfadangaben, das ist eher ungünstig bei dem Lösungschema was ich anstrebe. Geht meine idee denn überhaupt mit dynamischen bibliotheken?
Ich habe oben nochmal editiert, weil ich kein Fan von globalen Einstellungen bin. Das sollte dir eher weiterhelfen. Je nach Linker heißt die Option eventuell anders. Beim üblichen ld heißt sie zum Beispiel -rpath, aber -R versteht er auch wenn ein Pfad folgt. Der gcc reicht diese gängigen Optionen an den Linker weiter, falls nicht musst du -Wl benutzen um Linkeroptionen anzugeben (oder den Linker von Hand aufrufen).
Ob alles geklappt hat, kannst du mit ldd rausfinden.
-
deinen vorherigen Post nicht gesehen
-
bekomm immernoch den selben Fehler.
Wärst du vll so nett und könntest die 1-2 Shell-Befehle posten.
Das Internet ist auch nciht so wirklich hilfreich was das angeht. Ist mein Problem so unüblich?
-
Wahrscheinlich ja. Normalerweise werden Anwendungen installiert. Du kannst aber alle Dateien in ein Verzeichnis kopieren und dein Programm über ein Script starten. Darin kannst du auch über LD_LIBRARY_PATH das Verzeichnis für die Bibliotheken setzen, falls es notwendig sein sollte. Absolute Pfade lassen sich über Shell-Variablen auflösen.
-
Jud4s schrieb:
bekomm immernoch den selben Fehler.
Wärst du vll so nett und könntest die 1-2 Shell-Befehle posten.
Das Internet ist auch nciht so wirklich hilfreich was das angeht. Ist mein Problem so unüblich?Es sollte dies hier gehen:
g++ -o Tester main.cpp -lModelv0.1 -L../lib/ -R../lib/
Danach kannst du mit
ldd Tester
rausfinden, wo die Libs gesucht werden.
-
probier mal ldconfig evtl. auch sudo ldconfig, danach sollte es wohl gehen. (Also ldconfig -v ../mydir mylib oder so...)