LD_LIBRARY_PATH

Auteur: Ikipou

La variable d'environnement LD_LIBRARY_PATH permet de donner une liste de chemin vers des dossiers contenant des bibliothèques partagées.

Cette variable d'environnement permet de résoudre des problèmes de bibliothèque partagées manquante. Si une bibliothèque n'est pas à un emplacement standard, elle est signalé manquante par le chargeur. Il suffit alors d'ajouter le chemin vers le dossier de la bibliothèque à LD_LIBRARY_PATH pour que celle-ci soit prise en compte par le chargeur.

Ce type de résolution de problème n'est généralement utilisée que pour la mise au point. Pour ajouter définitivement un emplacement de bibliothèque partagées, il est préférable d'utiliser le fichier ld.so.conf

Pour préciser plusieurs chemins de recherche dans la variable d'environnement, il faut les séparer par un point virgule.

Exemple d'utilisation

On peut voir ici que Anjuta ne peut pas être lancé car il manque une bibliothèque partagée:

$ anjuta
anjuta: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory

La commande ldd permet de lister les bibliothèques partagées utilisée par un programme et ainsi voir laquelle pose problème. Ici le problème vient de la bibliothèque libgtk-x11 qui n'est pas trouvée par le chargeur.

La bibliothèque n'est pas trouvée par le chargeur car elle n'est pas sur un chemin standard de recherche. En effet, elle a été installé à partir des sources, et le chemin d'installation est /usr/local/lib.

La solution est d'ajouter ce chemin aux chemins de recherche du chargeur. Ici nous utilisons LD_LIBRARY_PATH pour les tests.

$ export LD_LIBRARY_PATH=/usr/local/lib
$ anjuta

En ajoutant le chemin de recherche correct, le chargeur trouve la bibliothèque et le programme se lance. Pour rendre le changement permanent, nous pourrions ajouter le chemin de recherche au fichier ld.so.conf.

Page de manuel

La page de manuel du chargeur de bibliothèque détaille les différents moyen de préciser un chemin de recherche des bibliothèques partagées. Une liste des variables d'environnement utilisés par le chargeur y est aussi donnée.

La programmation en C++ chez les industriels est comme le sexe chez
les adolescents :
- tout le monde y pense ;
- tout le monde en parle ;
- tout le monde croit que le voisin le fait ;
- presque personne ne le fait.
Ceux qui le font :
- le font mal ;
- pensent que la prochaine fois ce sera mieux ;
- ne prennent pas de précautions.