Frage

Was ist der beste Ort, anwendungsspezifische LD_LIBRARY_PATH Variable auf Solaris einrichten? Wie funktioniert

  

LD_LIBRARY_PATH

variable Arbeit?

Wir setzen es zur Zeit in .kshrc, aber unterschiedliche Anwendungen benötigen unterschiedliche Versionen von Messaging-Framework, aber diese Anwendungen unter dem gleichen Einsatz laufen und daher würden sie verschiedene LD_LIBRARY_PATH benötigen, so Ihrer Meinung nach, was der beste Ort, um diese Variable zu setzen ?

Im Grunde Ich versuche, herauszufinden, wie dieser Teil variable Pfad der Anwendung zu machen, anstatt Benutzerumgebung spezifisch sind.

War es hilfreich?

Lösung

Normalerweise würde ich nur einen Shell-Skript, das die Anwendung startet. In dem Shell-Skript würde ich gesetzt LD_LIBRARY_PATH, was ich brauche es für diese App zu sein, muß dann das Skript, das App starten. es auf diese Weise tun soll bewirken, dass der Weg für diese Anwendung nur dann eingestellt werden.

Andere Tipps

Sie können eine formale Beschreibung von LD_LIBRARY_PATH auf der man-Seite für „ld.so.1“, das heißt run „Mann ld.so.1“ finden. Es beschreibt auch einige andere Variablen, die von den Laufzeitlinker geehrt werden.

Neben LD_LIBRARY_PATH, ausführbare Dateien und gemeinsam genutzte Bibliotheken können auch einen integrierten Suchpfad für Bibliotheken. Wenn Sie eine Anwendung ausführen, die Sie selbst verknüpft haben, können Sie ld die Option -R verwenden, um die in Pfad gebaut gesetzt (beide Sun CC und gcc haben Optionen, um das Gleiche zu tun). Dies können Sie erlauben, mit LD_LIBRARY_PATH in erster Linie zu vermeiden.

Vladr ist alanc richtig.

Es ist nicht gesetzt LD_LIBRARY_PATH unter Solaris empfohlen. Bei allen.

Wenn Sie eine bestimmte RUNPATH in Ihrer Bibliothek oder ausführbare Datei backen müssen, dann sollten Sie den R-Flag an den Linker verwenden. Wenn mit gcc bauen, dann verwenden -Wl, rpath (glaube ich).

Wenn Sie dies für einen Post-Build-Schritt tun müssen (zB weil Sie fehlen Quelle neu kompilieren), dann elfedit (1) werden Ihnen helfen, eine Menge. Es ist dokumentiert in der Manual-Page, und auch im Linkers + Bibliotheken Führung unter http: // docs.oracle.com/cd/E26502_01/html/E26507/index.html

Die crle Antwort ist sehr korrekt. Unter Solaris LD_LIBRARY_PATH sollte nicht verwendet werden. Verwenden Sie crle statt. Um die Strompfade anzuzeigen, führen nur „crle“ von selbst aus. Um die Liste zu aktualisieren, verwenden crle -u -l /path/to/your/lib/directory. Die -u benötigt Änderungen an der Systemkonfiguration zu schreiben, sonst wird die Änderung nur vorübergehend sein wird. Siehe Manpage für weitere Optionen.

Nur einen Fall gefunden, dass die globalen LD_LIBRARY_PATH nicht Wirkung angenommen hat, hatte ich ein Skript und setzt LD_LIBRARY_PATH vor der App zu wickeln. crle ist eine gute globale Lösung, wenn Sie eine Menge Libs unter / opt / CSW / lib installiert, über pkgutil von Blastwave.

Sie Ihre .profile überprüfen oder .profile.user file.There .it wird nicht empfohlen, eine kommentierte Eintrag für sie sein werden, verwendet werden, da es broken.You ist die Binärdateien, indem Werte Flags bauen sollte anstatt der Variable.

Sie können den crle Befehl:

crle -l / path / to / your / lib / Datei

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top