ldd

Auteur: Ikipou

La commande ldd permet de lister l'ensemble des bibliothèques partagées requises par un exécutable.

Pour utiliser la commande, il suffit de la lancer en fournissant le chemin de l'exécutable à vérifier. Il est aussi possible de spécifier plusieurs exécutables. Voici par exemple comment afficher les dépendances de iptables:

$ ldd /sbin/iptables
        libdl.so.2 => /lib/libdl.so.2 (0x00002ba2432bc000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x00002ba2434c0000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x00002ba2436d8000)
        libc.so.6 => /lib/libc.so.6 (0x00002ba2438f0000)
        /lib64/ld-linux-x86-64.so.2 (0x00002ba24309f000)
        libsepol.so.1 => /lib/libsepol.so.1 (0x00002ba243c42000)

On peut aussi afficher les dépendances de plusieurs exécutables:

$ ldd /bin/echo /bin/cat
/bin/echo:
        libc.so.6 => /lib/libc.so.6 (0x00002ac3b78af000)
        /lib64/ld-linux-x86-64.so.2 (0x00002ac3b7692000)
/bin/cat:
        libc.so.6 => /lib/libc.so.6 (0x00002b536365a000)
        /lib64/ld-linux-x86-64.so.2 (0x00002b536343d000)

Utilisation

La commande ldd est utilisée pour résoudre les problèmes de bibliothèques partagées manquantes.

Par exemple, lors d'un problème de gestion de dépendance, un programme peut être installé, mais il lui manque des bibliothèques partagées. Dans ce cas, le lancement du programmeur échouera. Par exemple:

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

On voit ici qu'une bibliothèque de GTK+ est manquante, et que le programme ne peut se lancer.

Afin de découvrir l'ensemble des problèmes de bibliothèque partagée, il faut utiliser ldd:

$ which anjuta
/usr/bin/anjuta
$ ldd /usr/bin/anjuta
...
        libselinux.so.1 => /lib/libselinux.so.1 (0x00002aee4004d000)
        libgtk-x11-2.0.so.0 => not found
        libgnome-2.so.0 => not found
        libpangox-1.0.so.0 => not found
        libesd.so.0 => /usr/lib/libesd.so.0 (0x00002aee40267000)
...

On voit ici qu'il manque les bibliothèques GTK, GNOME et Pango. Il faut résoudre ces dépendances avant de pouvoir lancer le programme.

Résoudre les problèmes

Résoudre les problèmes de dépendances de bibliothèques partagées se fait en trois étape. La première est de déterminer les bibliothèques manquantes, ceci est fait avec ldd. Ensuite il faut trouver et installer ces bibliothèques. Finalement, il faut faire connaître l'emplacement de celle-ci au système.

Pour cette dernière étape, il existe deux façon de configurer l'emplacement des bibliothèques: la variable d'environnement LD_LIBRARY_PATH ou le fichier ld.so.conf. Dans le cas de l'utilisation du fichier, il faut aussi utiliser la commande ldconfig afin de régénérer le cache.

Page de manuel

Pour voir l'ensemble des options, vous pouvez consulter la page de manuel de ldd. Néanmoins, cette commande est généralement utilisée sans options.

La foi, semelle inusable pour qui n'avance pas.
-+- Henri Michaux -+-