Consulter le cache des bibliothèques partagées avec ldconfig -p
Dans l'étape précédente, vous avez utilisé la commande find pour parcourir tout le système de fichiers, ce qui peut être lent. Pour accélérer le processus de localisation des bibliothèques partagées, les systèmes Linux maintiennent un fichier cache, généralement situé dans /etc/ld.so.cache. Ce cache contient une liste compilée des bibliothèques partagées disponibles dans les répertoires système standards, permettant aux programmes de charger leurs dépendances beaucoup plus rapidement.
La commande ldconfig est l'outil principal pour gérer ce cache. Pour afficher le contenu du cache actuel des bibliothèques, vous pouvez utiliser l'option -p (print).
Exécutez la commande suivante pour afficher toutes les bibliothèques répertoriées dans le cache :
ldconfig -p
La sortie sera assez longue, car un système classique possède de nombreuses bibliothèques partagées. La commande indique le nombre de bibliothèques trouvées puis les énumère. Voici un court extrait de ce à quoi ressemble le résultat :
1234 libs found in cache `/etc/ld.so.cache'
libzstd.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzstd.so.1
libz.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so.1
libz.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so
libyield.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libyield.so.2
...
libc.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libc.so.6
...
Chaque ligne affiche le nom de la bibliothèque, son architecture et son ABI (par exemple, libc6,x86-64), ainsi que le chemin complet vers le fichier de la bibliothèque.
Pour éviter de faire défiler toute la liste, vous pouvez rediriger la sortie vers grep pour rechercher une bibliothèque spécifique. Cherchons l'entrée pour libc.so.6, sur laquelle nous avons travaillé :
ldconfig -p | grep libc.so.6
Cela filtrera la liste et n'affichera que les entrées liées à libc.so.6 :
libc.so.6 (libc6,x86-64, OS ABI: Linux 3.2.0) => /lib/x86_64-linux-gnu/libc.so.6
Comme vous pouvez le constater, c'est un moyen beaucoup plus rapide et direct de trouver l'emplacement d'une bibliothèque mise en cache que de chercher dans tout le système de fichiers. La sortie montre non seulement le nom et le chemin, mais aussi des informations sur l'architecture (libc6,x86-64) et la compatibilité ABI du système d'exploitation (OS ABI: Linux 3.2.0). Cependant, ce cache n'est pas mis à jour automatiquement en temps réel. Si vous installez une nouvelle bibliothèque, vous devez mettre à jour le cache pour que le système puisse la trouver. Dans l'étape suivante, vous apprendrez comment faire précisément cela.