Je recherche un utilitaire qui se comporterait de la même manière que which
, mais pour rechercher des bibliothèques partagées (*.so) dans les répertoires définis dans $LD_LIBRARY_PATH ?
Réponse acceptée :
Si vous avez un exécutable et que vous voulez voir où il récupère les bibliothèques, lancez
ldd /path/to/executable
Cela tiendra compte des bibliothèques sur le chemin de recherche par défaut ainsi que des bibliothèques dans le rpath de cet exécutable, le cas échéant.
Sous Linux, les chemins d'accès aux bibliothèques système sont mis en cache pour plus d'efficacité. /sbin/ldconfig -p
affiche le contenu du cache (il est stocké dans /etc/ld.so.cache
). Voici un script qui montre l'emplacement ou les emplacements d'une bibliothèque :
#!/bin/sh
if [ -n "$LD_LIBRARY_PATH" ]; then
set -f
IFS=:
for d in $LD_LIBRARY_PATH; do
if [ -e "$d/$1" ]; then echo "$1"; fi
done
fi
/sbin/ldconfig -p |
awk -v needle="$1" '$1 == needle {sub(/.* => /, ""); print}'