Risposte:
Se hai un eseguibile e vuoi vedere dove sta raccogliendo le librerie, esegui
ldd /path/to/executable
Questo rappresenterà le librerie sul percorso di ricerca predefinito e le librerie in questo eseguibile rPath se presente.
Su Linux, i percorsi delle librerie di sistema sono memorizzati nella cache per efficienza. /sbin/ldconfig -p
visualizza il contenuto della cache (è memorizzato in /etc/ld.so.cache
). Ecco uno script che mostra le posizioni di una libreria:
#!/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}'
Se le tue librerie sono correttamente memorizzate nella cache, dovresti essere in grado di trovarlo tramite:
ldconfig -p|grep "yourlibrary"
Se cerchi una libreria fornita con la tua distribuzione, puoi utilizzare i mezzi di distribuzione per cercare file all'interno dei pacchetti.
Questo produrrà anche rpms che non sono installati, ma che fanno parte delle tue fonti di installazione attive.
Se stai cercando un'utilità che funzionerà come gcc
il -lLIBNAME
flag di, che cerca un file chiamato, libLIBNAME.so
probabilmente potresti usare un piccolo script che fa qualcosa del genere:
#!/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 ]