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.

DEVINETTE

P : Qu'est-ce que c'est ?
M : Un oeuf...
P : Un oeuf poilu ?
M : Oui, un oeuf de mammouth...
P : On dirait plutôt une noix de coco.
M : Une noix de mammouth, alors. Les cocos n'ont pas les couilles aussi grosses.