So legen Sie die Umgebungsvariable LD_LIBRARY_PATH unter Linux fest

212

Ich habe zuerst den Befehl ausgeführt: export LD_LIBRARY_PATH=/usr/local/lib

Dann habe ich .bash_profileDatei geöffnet : vi ~/.bash_profile. In diese Datei habe ich gesetzt:

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

Wenn das Terminal geschlossen und neu gestartet wird, echo $LD_LIBRARY_PATHzeigt die Eingabe kein Ergebnis an.

Wie kann man den Pfad dauerhaft festlegen?

singha
quelle
9
Hier auf das Offensichtliche hinweisen ... Wenn Sie nur korrigieren möchten, was Sie getan haben, fügen Sie ein $, z. B.export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
Cookie
11
lauf einfach sudo ldconfigdanach
Necktwi
das mag albern sein, aber hast du $ source ~/.bash_profile? Ich neige dazu, das zu vergessen. Und dann, wie @neckTwi sagte, führen Sie ldconfig
ashley

Antworten:

208

Sie sollten mehr Details über Ihre Verteilung, zB unter Ubuntu die richtige Art und Weise hinzuzufügen , dies zu tun , sind eine benutzerdefinierte hinzuzufügen .confDatei /etc/ld.so.conf.d, zum Beispiel

sudo gedit /etc/ld.so.conf.d/randomLibs.conf

Innerhalb der Datei sollen Sie den vollständigen Pfad in das Verzeichnis schreiben, das beispielsweise alle Bibliotheken enthält, die Sie dem System hinzufügen möchten

/home/linux/myLocalLibs

Denken Sie daran, nur den Pfad zum Verzeichnis hinzuzufügen, nicht den vollständigen Pfad für die Datei. Alle Bibliotheken in diesem Pfad werden automatisch indiziert.

Speichern und ausführen sudo ldconfig, um das System mit diesen Bibliotheken zu aktualisieren.

user1824407
quelle
Entschuldigung, dass Sie die Distribution nicht erwähnt haben. Sein Fedora 16
singha
Sie können diese Lösung für Fedora verwenden. Die von Joachim Pileborg vorgeschlagene Lösung ist nützlich, wenn Sie die Ansicht dieser Bibliotheken auf einen bestimmten Benutzer beschränken möchten. Wenn Sie eine systemweite Bibliothek verwenden möchten, sollten Sie meine Lösung verwenden. Es hängt alles davon ab, wonach Sie suchen.
user1824407
11
Ist das wirklich der richtige Weg? Angenommen, Sie haben mehrere Benutzer, die lokale Bibliotheken erstellen, und Sie haben beide zu /etc/ld.so.conf.d hinzugefügt. Jetzt kann Benutzer A eine Verknüpfung zu den lokalen Bibliotheken von Benutzer B herstellen. Nicht gut.
Ergosys
/usr/local/libist normalerweise schon da, so dass es einfach nicht nötig ist, irgendwelche Dateien zu bearbeiten sudo ldconfig.
Nyuszika7h
1
Seltsamerweise hat es bei euch allen funktioniert, aber bei mir hat es nicht funktioniert, während der export LD_LIBRARY_PATH ....Weg funktioniert !!
Buchhalter م
105

Behalten Sie den vorherigen Pfad bei, überschreiben Sie ihn nicht:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/

Sie können es zu Ihrem ~ / .bashrc hinzufügen:

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc
Ariel Monaco
quelle
36

Hinzufügen

LD_LIBRARY_PATH = "/ path / you / want1: / path / you / want / 2"

zu /etc/environment

Siehe die Ubuntu-Dokumentation .

KORREKTUR: Ich sollte meinen eigenen Rat befolgen und die Dokumentation tatsächlich lesen. Dies gilt nicht für LD_LIBRARY_PATH: Seit Ubuntu 9.04 Jaunty Jackalope kann LD_LIBRARY_PATH nicht in den Dateien $ HOME / .profile, / etc / profile oder / etc / environment festgelegt werden. Sie müssen die Konfigurationsdateien /etc/ld.so.conf.d/ .conf verwenden. * Die Antwort von user1824407 ist also genau richtig.

MrUser
quelle
Wow, ich habe diese Seite mehrmals angeschaut und das übersehen. Vielen Dank, dass Sie es entdeckt und uns darauf aufmerksam gemacht haben.
Michael Scheper
4
Ubuntu ist hier ein Sonderfall. Ubuntus Ansicht ist, dass alle Benutzer die gleichen Bibliotheken wollen und dass es nur einen Platz für jede Bibliothek gibt (siehe Diskussion im Launchpad-Fehler # 366728). Auf Forschungs- oder Entwicklungssystemen für mehrere Benutzer möchten Sie jedoch, dass jeder Benutzer über seine eigenen Versionen von Bibliotheken verfügt. Die meisten Linux-Distributionen erlauben dies und das schon seit vielen Jahren.
Joachim Wagner
9
Ich habe 4 Stunden damit verbracht herauszufinden, warum ich PATH und PKG_CONFIG_PATH setzen kann, aber nicht LD_LIBRARY_PATH. Ich kann nicht einmal.
Mikhail Cheshkov
@JoachimWagner Ja, das ist richtig, und warum Conda und / oder Bioconda oder Virtenv jetzt eine bevorzugte Methode zum Aufrufen eines bestimmten Programms mit speziellen Umgebungsvariablen ist. Wenn Sie umhüllte Umgebungen verwenden und versehentlich den Pfad LD_LIBRARY festlegen, treten keine systembedingten Probleme auf.
Andor Kiss
23

Die Datei .bash_profilewird nur von Login-Shells ausgeführt. Möglicherweise müssen Sie es ~/.bashrceingeben oder sich einfach abmelden und erneut anmelden.

Ein Programmierer
quelle
Vielen Dank, dass Sie Joachim Pileborg. Ich habe das System neu gestartet und jetzt ist sein Pfad dauerhaft festgelegt.
singha
21

Alternativ können Sie ein Programm mit dem angegebenen Bibliotheksverzeichnis ausführen:

/lib/ld-linux.so.2 --library-path PATH EXECUTABLE

Lesen Sie hier mehr .

K15.Multik
quelle
2
Hat mir auch geholfen
spt025
17

Aus irgendeinem Grund hat niemand die Tatsache erwähnt, dass der bashrc nach der Bearbeitung neu bezogen werden muss. Sie können sich entweder abmelden und wieder anmelden (wie oben erwähnt), aber Sie können auch die folgenden Befehle verwenden: source ~/.bashrcoder . ~/.bashrc.

nbroeking
quelle
14

Setzen Sie export LD_LIBRARY_PATH=/usr/local/libein ~/.bashrc[vorzugsweise gegen Ende des Skripts, um Überschreibungen dazwischen zu vermeiden. Standard enthält ~/.bashrcviele if-elseAnweisungen]

Post , dass , wenn Sie ein neues Terminal / konsole öffnen, LD_LIBRARY_PATHwird reflektiert

Anshul
quelle
Entschuldigung, dass Sie die Distribution nicht erwähnt haben. Sein Fedora 16
singha
7
  1. Gehen Sie zum Home-Ordner und bearbeiten Sie .profile
  2. Platzieren Sie die folgende Zeile am Ende

    export LD_LIBRARY_PATH=<your path>

  3. Speichern und schließen.

  4. Führen Sie diesen Befehl aus

    sudo ldconfig

singingingh
quelle
3

Ich mache das Folgende in Mint 15 bis 17, funktioniert auch auf Ubuntu Server 12.04 und höher:

sudo vi /etc/bash.bashrc 

Scrollen Sie nach unten und fügen Sie hinzu:

export LD_LIBRARY_PATH=.

Allen Benutzern wurde die Umgebungsvariable hinzugefügt.

Johnnyb
quelle
3

Sie können versuchen, ein benutzerdefiniertes Skript hinzuzufügen, z . B. myenv_vars.shin /etc/profile.d.

cd /etc/profile.d
sudo touch myenv_vars.sh
sudo gedit myenv_vars.sh

Fügen Sie dies der leeren Datei hinzu und speichern Sie es.

export LD_LIBRARY_PATH=/usr/local/lib

Abmelden und Anmelden LD_LIBRARY_PATHwurden dauerhaft festgelegt.

Methusael Murmu
quelle
1
Tolle Antwort. Die beste Wahl für mich, jedes Mal während der Systeminitialisierung einen Pfad zu exportieren und viel sicherer als die physische Bearbeitung von / etc / bashrc
Joseph