Réponses:
Si vous avez un exécutable et que vous voulez voir où il récupère les bibliothèques, exécutez
ldd /path/to/executable
Cela compte pour les bibliothèques sur le chemin de recherche par défaut, ainsi que des bibliothèques de cet exécutable de rpath 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 -paffiche le contenu du cache (il est stocké dans /etc/ld.so.cache). Voici un script qui montre le 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}'
Si vos bibliothèques sont correctement mises en cache, vous devriez pouvoir les trouver via:
ldconfig -p|grep "yourlibrary"
Si vous recherchez une bibliothèque fournie avec votre distribution, vous pouvez utiliser les moyens de distribution pour rechercher des fichiers dans des packages.
Cela produira également des rpms qui ne sont pas installés, mais qui font partie de vos sources d'installation actives.
Si vous recherchez un utilitaire qui fonctionnera comme gccle -lLIBNAMEdrapeau de, qui recherche un fichier appelé, libLIBNAME.sovous pouvez probablement utiliser un petit script qui fait quelque chose comme ceci:
#!/bin/sh
ldpath="${LD_LIBRARY_PATH:-$(</etc/ld.so.conf)}"
notfound=1
for libdir in ${ldpath//:/ }; do
(test -f "$libdir/lib${1}.so" && echo "$_") && notfound=0
done
[ "$notfound" -eq 0 ]