Come impostare la variabile ambientale LD_LIBRARY_PATH in Linux


213

Ho prima eseguito il comando: export LD_LIBRARY_PATH=/usr/local/lib

Poi ho aperto .bash_profileil file: vi ~/.bash_profile. In questo file, ho inserito:

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

Quindi se il terminale viene chiuso e riavviato, la digitazione echo $LD_LIBRARY_PATHnon visualizza alcun risultato.

Come impostare il percorso in modo permanente?


9
Sottolineando l'ovvio qui ... Se vuoi solo correggere quello che hai fatto, aggiungi un $, ad esempioexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH
Cookie

11
sudo ldconfig
ho

questo potrebbe essere sciocco ma vero $ source ~/.bash_profile? Tendo a dimenticarlo. E poi come ha detto @neckTwi, esegui ldconfig
ashley,

Risposte:


208

Dovresti aggiungere maggiori dettagli sulla tua distribuzione, ad esempio sotto Ubuntu il modo giusto per farlo è quello di aggiungere un .conffile personalizzato /etc/ld.so.conf.d, ad esempio

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

all'interno del file dovresti scrivere il percorso completo nella directory che contiene tutte le librerie che desideri aggiungere al sistema, ad esempio

/home/linux/myLocalLibs

ricordati di aggiungere solo il percorso alla directory, non il percorso completo per il file, tutte le librerie all'interno di quel percorso verranno automaticamente indicizzate.

Salva ed esegui sudo ldconfig per aggiornare il sistema con queste librerie.


Ci scusiamo per non aver menzionato la distribuzione. È Fedora 16
singha il

puoi usare questa soluzione per Fedora, la soluzione suggerita da Joachim Pileborg è utile se decidi di limitare la visualizzazione di queste librerie a 1 utente specifico, se vuoi una libreria a livello di sistema dovresti usare la mia soluzione. Dipende tutto da cosa stai cercando.
user1824407,

11
È davvero il modo giusto? Supponiamo di avere più utenti che creano librerie locali e di averli aggiunti a /etc/ld.so.conf.d. Ora l'utente A può collegarsi alle librerie locali dell'utente B. Non bene.
ergosys,

/usr/local/libdi solito è già lì, quindi non è necessario modificare alcun file, solo sudo ldconfig.
nyuszika7h,

1
Strano ha funzionato con tutti voi ragazzi, tuttavia non ha funzionato per me, mentre export LD_LIBRARY_PATH ....funziona !!
Ragioniere م

106

Mantieni il percorso precedente, non sovrascriverlo:

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

Puoi aggiungerlo al tuo ~ / .bashrc:

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc

36

Inserisci

LD_LIBRARY_PATH = "/ percorso / voi / want1: / percorso / vuoi / tu / 2"

per /etc/environment

Vedi la documentazione di Ubuntu .

CORREZIONE: dovrei prendere il mio consiglio e leggere effettivamente la documentazione. Dice che ciò non si applica a LD_LIBRARY_PATH: poiché Ubuntu 9.04 Jaunty Jackalope, LD_LIBRARY_PATH non può essere impostato in $ HOME / .profile, / etc / profile, né / etc / environment files. È necessario utilizzare i file di configurazione /etc/ld.so.conf.d/ .conf. * Quindi la risposta di user1824407 è esatta.


Wow, ho guardato quella pagina diverse volte e l'ho trascurato. Grazie per averlo individuato e portato alla nostra attenzione.
Michael Scheper,

4
Ubuntu è un caso speciale qui. L'opinione di Ubuntu è che tutti gli utenti desiderano le stesse librerie e che esiste un solo posto per ciascuna libreria (leggi la discussione nel bug # 366728 del Launchpad). Tuttavia, sui sistemi di ricerca o sviluppo multiutente, si desidera che ciascun utente possa disporre delle proprie versioni delle librerie. La maggior parte delle distribuzioni Linux lo consente e lo fa da molti anni.
Joachim Wagner,

9
Ho trascorso 4 ore a cercare di capire perché posso impostare PATH e PKG_CONFIG_PATH, ma non LD_LIBRARY_PATH. Non posso nemmeno.
Mikhail Cheshkov,

@JoachimWagner Sì, questo è corretto e perché conda e / o bioconda o virtenv sono ora un metodo preferito per invocare un determinato programma con speciali variabili ambientali. Utilizzando ambienti racchiusi, l'impostazione involontaria del percorso LD_LIBRARY non avrà problemi / problemi sistemici.
Andor Kiss,

23

Il file .bash_profileviene eseguito solo da shell di login. Potrebbe essere necessario inserirlo ~/.bashrco semplicemente disconnettersi e accedere nuovamente.


Grazie Joachim Pileborg. Ho riavviato il sistema e ora il suo percorso è impostato in modo permanente.
singha,

21

In alternativa è possibile eseguire il programma con la directory della libreria specificata:

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

Leggi di più qui .


2
Mi ha aiutato anche
spt025,

17

Per qualche ragione nessuno ha menzionato il fatto che il bashrc deve essere ricondotto dopo la modifica. Puoi disconnetterti e riconnetterti (come menzionato sopra) ma puoi anche usare i comandi: source ~/.bashrco . ~/.bashrc.


14

Mettere export LD_LIBRARY_PATH=/usr/local/lib in ~/.bashrc[preferibilmente verso la fine dello script per evitare eventuali sostituzioni in mezzo, di default ~/.bashrcviene fornito con moltiif-else affermazioni]

Pubblica che ogni volta che apri un nuovo terminale / console, LD_LIBRARY_PATHsi rifletterà


Ci scusiamo per non aver menzionato la distribuzione. È Fedora 16
singha il

7
  1. Vai alla cartella principale e modifica .profile
  2. Posiziona la seguente riga alla fine

    export LD_LIBRARY_PATH=<your path>

  3. Salva ed esci.

  4. Esegui questo comando

    sudo ldconfig


3

Faccio quanto segue in Mint 15 a 17, funziona anche su Ubuntu Server 12.04 e versioni successive:

sudo vi /etc/bash.bashrc 

scorrere verso il basso e aggiungere:

export LD_LIBRARY_PATH=.

A tutti gli utenti è stata aggiunta la variabile di ambiente.


3

Si potrebbe provare ad aggiungere uno script personalizzato, dite myenv_vars.sha /etc/profile.d.

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

Aggiungi questo al file vuoto e salvalo.

export LD_LIBRARY_PATH=/usr/local/lib

Logout e login, LD_LIBRARY_PATHsaranno stati impostati in modo permanente.


1
Risposta fantastica. La scelta migliore per me esportare un percorso ogni volta durante l'inizializzazione del sistema e molto più sicuro rispetto alla modifica fisica / etc / bashrc
Joseph,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.