Comment définir la variable d'environnement LD_LIBRARY_PATH sous Linux


213

J'ai d'abord exécuté la commande: export LD_LIBRARY_PATH=/usr/local/lib

Ensuite , je l' ai ouvert le .bash_profilefichier: vi ~/.bash_profile. Dans ce dossier, je mets:

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

Ensuite, si le terminal est fermé et redémarré, la saisie echo $LD_LIBRARY_PATHn'affiche aucun résultat.

Comment définir le chemin de façon permanente?


9
Soulignant l'évidence ici ... Si vous voulez juste réparer ce que vous avez fait, ajoutez un $, par exempleexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH
— Cookie

11
il suffit de courir sudo ldconfigaprès cela
— Necktwi

cela peut être idiot, mais l'avez-vous fait $ source ~/.bash_profile? J'ai tendance à l'oublier. Et puis comme @neckTwi dit run ldconfig
— ashley

Réponses:


208

Vous devriez ajouter plus de détails sur votre distribution, par exemple sous Ubuntu la bonne façon de le faire est d'ajouter un .conffichier personnalisé /etc/ld.so.conf.d, par exemple

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

à l'intérieur du fichier, vous êtes censé écrire le chemin complet vers le répertoire qui contient toutes les bibliothèques que vous souhaitez ajouter au système, par exemple

/home/linux/myLocalLibs

n'oubliez pas d'ajouter uniquement le chemin du répertoire, pas le chemin complet du fichier, toutes les bibliothèques à l'intérieur de ce chemin seront automatiquement indexées.

Enregistrez et exécutez sudo ldconfigpour mettre à jour le système avec ces bibliothèques.


Désolé de ne pas mentionner la distribution. Son Fedora 16
— singha

vous pouvez utiliser cette solution pour Fedora, la solution suggérée par Joachim Pileborg, elle est utile si vous décidez de limiter la vue de ces bibliothèques à 1 utilisateur spécifique, si vous voulez une bibliothèque à l'échelle du système, utilisez ma solution. Tout dépend de ce que vous recherchez.
— user1824407

11
Est-ce vraiment la bonne façon? Supposons que plusieurs utilisateurs créent des bibliothèques locales et que vous les avez tous les deux ajoutés à /etc/ld.so.conf.d. L'utilisateur A peut désormais se lier aux bibliothèques locales de l'utilisateur B. Pas bon.
— ergosys

/usr/local/libest généralement déjà là, donc il n'est pas nécessaire de modifier des fichiers, juste sudo ldconfig.
— nyuszika7h

1
Étrange, cela a fonctionné avec vous tous, mais cela n'a pas fonctionné pour moi, alors que la export LD_LIBRARY_PATH ....méthode fonctionne !!
— Accountant م

106

Gardez le chemin précédent, ne le remplacez pas:

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

Vous pouvez l'ajouter à votre ~ / .bashrc:

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

36

Ajouter

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

à /etc/environment

Voir la documentation Ubuntu .

CORRECTION: Je devrais suivre mes propres conseils et lire la documentation. Il indique que cela ne s'applique pas à LD_LIBRARY_PATH: depuis Ubuntu 9.04 Jaunty Jackalope, LD_LIBRARY_PATH ne peut pas être défini dans $ HOME / .profile, / etc / profile, ni / etc / environment files. Vous devez utiliser les fichiers de configuration /etc/ld.so.conf.d/ .conf. * La réponse de user1824407 est donc exacte.


Wow, j'ai regardé cette page plusieurs fois et j'ai oublié ça. Merci de l'avoir repéré et de l'avoir porté à notre attention.
— Michael Scheper

4
Ubuntu est un cas particulier ici. La vision d'Ubuntu est que tous les utilisateurs veulent les mêmes bibliothèques et qu'il n'y a qu'un seul endroit pour chaque bibliothèque (lire la discussion dans le bug Launchpad # 366728). Cependant, sur les systèmes de recherche ou de développement multi-utilisateurs, vous souhaitez que chaque utilisateur puisse avoir sa propre version des bibliothèques. La plupart des distributions Linux le permettent et le font depuis de nombreuses années.
— Joachim Wagner

9
J'ai passé 4 heures à essayer de comprendre pourquoi je peux définir PATH et PKG_CONFIG_PATH, mais pas LD_LIBRARY_PATH. Je ne peux même pas.
— Mikhail Cheshkov

@JoachimWagner Oui, c'est correct, et pourquoi conda et / ou bioconda ou virtenv est maintenant une méthode préférée pour invoquer un programme particulier avec des variables environnementales spéciales. En utilisant des environnements enfermés, la définition par inadvertance du chemin LD_LIBRARY n'aura pas de problèmes / problèmes systémiques.
— Andor Kiss du

23

Le fichier .bash_profilen'est exécuté que par des shells de connexion. Vous devrez peut-être le mettre ~/.bashrc, ou simplement vous déconnecter et vous reconnecter.


Merci Joachim Pileborg. J'ai redémarré le système et maintenant son chemin est défini de façon permanente.
— singha

21

Alternativement, vous pouvez exécuter le programme avec le répertoire de bibliothèque spécifié:

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

Lisez plus ici .


2
— M'a

17

Pour une raison quelconque, personne n'a mentionné le fait que le bashrc doit être ressourcé après l'édition. Vous pouvez soit vous déconnecter et vous reconnecter (comme mentionné ci-dessus) mais vous pouvez également utiliser les commandes: source ~/.bashrcou . ~/.bashrc.


14

Mettre export LD_LIBRARY_PATH=/usr/local/liben ~/.bashrc[ de préférence vers la fin du script pour éviter tout remplacement entre les deux, par défaut ~/.bashrcest livré avec de nombreuses if-elsedéclarations]

Publiez que chaque fois que vous ouvrez un nouveau terminal / konsole, LD_LIBRARY_PATHcela sera reflété


Désolé de ne pas mentionner la distribution. Son Fedora 16
— singha

7
  1. Accédez au dossier d'accueil et modifiez le .profile
  2. Placez la ligne suivante à la fin

    export LD_LIBRARY_PATH=<your path>

  3. Sauvegarder et quitter.

  4. Exécutez cette commande

    sudo ldconfig


3

Je fais ce qui suit dans Mint 15 à 17, fonctionne également sur le serveur Ubuntu 12.04 et supérieur:

sudo vi /etc/bash.bashrc 

faites défiler vers le bas et ajoutez:

export LD_LIBRARY_PATH=.

Tous les utilisateurs ont la variable d'environnement ajoutée.


3

Vous pouvez essayer d' ajouter un script personnalisé, disons que myenv_vars.shdans /etc/profile.d.

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

Ajoutez-le au fichier vide et enregistrez-le.

export LD_LIBRARY_PATH=/usr/local/lib

La déconnexion et la connexion LD_LIBRARY_PATHauront été définies de façon permanente.


1
Réponse géniale. Le meilleur choix pour moi d'exporter un chemin à chaque fois pendant l'initialisation du système et beaucoup plus sûr que de modifier physiquement / etc / bashrc
— Joseph
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.