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?

singha
la source
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.

user1824407
la source
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
Ariel Monaco
la source
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.

MrUser
la source
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.

Un mec programmeur
la source
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 .

K15.Multik
la source
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.

nbroeking
la source
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é

Anshul
la source
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

singingsingh
la source
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.

Johnnyb
la source
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.

Methusael Murmu
la source
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