Estoy buscando una utilidad que se comporte de la misma manera que which
, sino para buscar bibliotecas compartidas (*.so) en los directorios definidos en $LD_LIBRARY_PATH?
Respuesta aceptada:
Si tiene un ejecutable y quiere ver dónde está recogiendo bibliotecas, ejecute
ldd /path/to/executable
Esto tendrá en cuenta las bibliotecas en la ruta de búsqueda predeterminada, así como las bibliotecas en la ruta de acceso de este ejecutable, si las hay.
En Linux, las rutas a las bibliotecas del sistema se almacenan en caché para mayor eficiencia. /sbin/ldconfig -p
muestra el contenido del caché (está almacenado en /etc/ld.so.cache
). Aquí hay una secuencia de comandos que muestra la(s) ubicación(es) de una biblioteca:
#!/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}'