Sto cercando un'utilità che si comporti allo stesso modo di which
, ma per cercare le librerie condivise (*.so) nelle directory definite in $LD_LIBRARY_PATH?
Risposta accettata:
Se hai un eseguibile e vuoi vedere dove sta prelevando le librerie, esegui
ldd /path/to/executable
Ciò terrà conto delle librerie nel percorso di ricerca predefinito e delle librerie nel percorso di questo eseguibile, se presenti.
Su Linux, i percorsi delle librerie di sistema vengono memorizzati nella cache per motivi di efficienza. /sbin/ldconfig -p
mostra 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}'