Ich habe zwei auf die gleiche Ausgabe Probleme im Zusammenhang mit:Einstellung LD_LIBRARY_PATH Umgebungsvariable eine gemeinsame Bibliothek zur Laufzeit für das Laden (g ++)
Ich habe ein gemeinsames Objekt gespeichert in `pwd`/lib und während Die ausführbare Datei, die sie verwendet, wird erfolgreich kompiliert (durch die Verwendung von -l und -L-Schaltern), zur Laufzeit gibt es mir Kummer. Wenn ich versuche,
LD_LIBRARY_PATH=/my/absolute/path/to/library/directory ./test
zu laufen, funktioniert es gut. Aber wenn ich LD_LIBRARY_PATH =/my/absolute/path/in/library/verzeichne und./test
mache, heißt es, dass die Shared Library nicht gefunden werden kann. Aber wenn ich wiederLD_LIBRARY_PATH=$LD_LIBRARY_PATH ./test
mache, funktioniert es gut !! Irgendwelche Ideen, was ich falsch mache?Das zweite Problem bezieht sich auf den Export der LD_LIBRARY_PATH-Umgebungsvariable. Wenn ich ein Terminal öffnen und
export LD_LIBRARY_PATH=/path/to/stuff
eingeben und dannecho $LD_LIBRARY_PATH
eingeben, ist die Variable korrekt. Wenn ich jedoch ein Skript schreibe, das den export-Befehl enthält, wird die Variable nicht einfach aktualisiert, sondern ich musssource install.sh
ausführen, um die Variable tatsächlich beizubehalten. Was ist die beste Lösung dafür?
Vielen Dank für Ihre Zeit!
Danke für die Antwort! Ich versuche, einen Weg zu finden, den Pfad zu den geteilten Objekten zu gründen, ohne sudo Befehle zu benutzen (und ihn in/usr/local/lib zu setzen) oder die bash Akte des Benutzers zu ändern. Gibt es einen allgemein akzeptierten Weg? – rhobincu
Hmm, ich denke, es gibt keine "sichere" Möglichkeit, es zu tun, aber schau hier: (http://www.linuxquestions.org/questions/linux-software-2/how-to-set-ld_library_path-684799/). Ich weiß nicht zu viel darüber, aber ich habe Empfehlungen gesehen, um Ihr Hauptprogramm in ein einfaches Skript zu verpacken, das den Bibliothekspfad einrichtet, Ihr aktuelles Programm ausführt und es dann löscht. Anstatt Ihr Programm direkt aufzurufen, sollten Benutzer das Skript ausführen. – maditya
Eigentlich kann dies helfen: http://osr507doc.sco.com/en/tools/ccs_linkedit_dynamic_dirsearch.html Es handelt sich um die LD_RUN_PATH-Variable, die es Ihnen ermöglicht, Ihre Bibliotheksstandorte zur Verknüpfungszeit anzugeben (eine Alternative zu LD_LIBRARY_PATH, die "lässt Sie zur Laufzeit dasselbe machen"). Dies ist ungefähr die Grenze meines Wissens dazu, sorry ... – maditya