Wo kann man den einstellen LD_LIBRARY_PATH unter Solaris?
Was ist der beste Ort, um anwendungsspezifische LD_LIBRARY_PATH
variable auf Solaris?
Wie funktioniert
LD_LIBRARY_PATH
variable arbeiten?
Wir derzeit legen Sie es in .kshrc
, aber verschiedene Anwendungen benötigen unterschiedliche Versionen der messaging-framework, aber diese Anwendungen laufen unter den gleichen Einsatz und somit müssen Sie verschiedene LD_LIBRARY_PATH
, also was ist deiner Meinung nach der beste Ort, um setzen Sie diese variable?
Grundsätzlich bin ich versucht, herauszufinden, wie man diese variable den Pfad der Anwendung anstelle der Benutzer-Umgebung.
InformationsquelleAutor Ville M | 2009-03-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Normalerweise würde ich einfach ein shell-Skript, das die Anwendung startet. In dem shell-script würde ich LD_LIBRARY_PATH zu, was ich brauche, es zu sein, dass die app, dann haben Sie das Skript starten, die app. Dieses Vorgehen sollte dazu führen, dass der Pfad eingestellt werden, nur für diese Anwendung.
LD_LIBRARY_PATH (oder LD_LIBRARY_PATH_32 und LD_LIBRARY_PATH_64) muss festgelegt werden, bevor die ausführbare Datei gestartet wird - da ld.so.1 liest es vor der main() und nicht Lesen Sie ihn danach.
Ich denke, das würde funktionieren, aber Sie wollen, es zu versuchen zuerst, um sicher zu sein
Dies würde, bevor die ausführbare Datei gestartet wird. Legen Sie den Pfad in das Skript, dann das Skript starten Sie die ausführbare Datei.
InformationsquelleAutor Eric Petroelje
Finden Sie eine formale Beschreibung von
LD_LIBRARY_PATH
auf der man-Seite für "ld.so.1", ie run " - Mann, ld.so.1". Es beschreibt auch einige andere Variablen, die geehrt werden, die von der Laufzeit-linker.Neben
LD_LIBRARY_PATH
, ausführbare Dateien und shared libraries können auch eine built-in-Suchpfad für Bibliotheken. Wenn Sie eine Anwendung ausführen, die Sie verknüpft haben, kannst du verwenden ld-R option, um die eingebauten Weg (sowohl Sonne als CC-und gcc-Optionen, die die gleiche Sache zu tun). Dies kann Ihnen erlauben, zu vermeiden, mitLD_LIBRARY_PATH
in den ersten Platz.InformationsquelleAutor Kenster
Vladr, alanc korrekt ist.
Es ist nicht empfehlenswert, LD_LIBRARY_PATH unter Solaris. An alle.
Wenn Sie brauchen, um zu Backen, eine bestimmte runpath in Ihrer Bibliothek oder ausführbare Datei,
dann sollten Sie das -R flag-linker. Wenn Gebäude mit gcc, dann
Einsatz -Wl,Rpath (glaube ich).
Wenn Sie tun müssen, um dieses für eine post-build-Schritt (z.B., weil Sie fehlen
source neu zu kompilieren), dann elfedit(1) wird Ihnen helfen, eine Menge. Es ist dokumentiert
in der manpage, und auch im Linker - + - Bibliotheken Handbuch auf http://docs.oracle.com/cd/E26502_01/html/E26507/index.html
-R
. Sie können immer noch-Wl,-Rsomedir
weil es dann portabel zu Linux. Oder verwenden Sie-Wl,-rpath,somedir
das auch verstanden, z.B. durch den Laufzeit-linker unter Solaris und Linux.InformationsquelleAutor James McPherson
Den crle Antwort ist korrekt. Auf Solaris
LD_LIBRARY_PATH
sollte nicht verwendet werden. Verwenden crle statt. Zum anzeigen der aktuellen Pfade, führen Sie einfach "crle" von sich. Um die Liste zu aktualisieren, verwenden Siecrle -u -l /path/to/your/lib/directory
. Die-u
ist notwendig, um schreiben änderungen an der system-Konfiguration, ansonsten wird die änderung nur vorübergehend sein wird. Siehe die man-Seite für weitere Optionen.falsch, man kann
crle -c
zu definieren pro Anwendung-Umgebungen, a la Windows-manifestiert (siehe Beispiel 6 auf docs.oracle.com/cd/E19082-01/819-2239/crle-1/index.html).InformationsquelleAutor Dan Ramaley
Gerade einen Fall, dass die Globale LD_LIBRARY_PATH nicht wirksam ist, musste ich wickeln Sie das Skript und setzen Sie den LD_LIBRARY_PATH, bevor die app.
crle ist eine gute Globale Lösung, wenn Sie installiert eine Menge libs unter /opt/csw/lib, über pkgutil von blastwave.
InformationsquelleAutor gengmao
Können Sie Ihre .Profil oder .Profil.Benutzer-Datei.Es wird eine kommentierte Eintrag .Es ist nicht empfehlenswert, da es kaputt ist.Bauen Sie die Binärdateien, die durch übergabe von Werten an Flaggen anstatt der Variablen.
InformationsquelleAutor Iceman
Können Sie die crle-Befehl:
crle -l /path/to/your/lib/Datei
alanc richtig ist.
ist schief.
crle -c
Ihnen erlauben, Einfluss auf bestimmte Anwendungen (siehe Beispiel 6 auf docs.oracle.com/cd/E19082-01/819-2239/crle-1/index.html)Ich war auf dem Weg crle wird in der Antwort. Ich habe noch nie gesehen, die Verwendung von crle Sie auf der man-Seite vor, und es ist nicht die Art, wie diese Antwort sagt, es zu benutzen.
InformationsquelleAutor Sedawk