
¿Existe un GNU Linux integrado para obtener una lista de los nombres de archivos de las bibliotecas compartidas? He considerado analizar la salida de ldconfig -p
. Sin embargo, no estoy seguro de la coherencia en la salida de un sistema a otro.
Ya soy consciente de que podría usarlo, find
pero dado que el vinculador/cargador tiene un caché de bibliotecas y ubicaciones, parece más eficiente usarlo de alguna manera. Además, las rutas que busca el vinculador/cargador son las únicas que me preocupan, es decir, bibliotecas que han sido procesadas por ldconfig
.
Respuesta1
Si desea capturarlos a todos, no hay otra opción que realizar recorridos completos del sistema de archivos. ldconfig
Solo conoce las bibliotecas en las rutas estándar y las rutas adicionales en las que está configurado para buscar (generalmente definidas en /etc/ld.so.conf*
). Los lugares sospechosos habituales donde se pueden encontrar otras bibliotecas son $HOME
y /opt
, aunque no hay límite, especialmente cuando las personas crean aplicaciones por sí mismas.
Si no confía en el resultado de ldconfig -p
, puede analizar su caché directamente. Es binario, pero su uso strings
elimina toda la basura (5, por lo que /lib/ coincide):
strings -n5 /etc/ld.so.cache
En mi sistema, ambos dan los mismos resultados, lo cual verifiqué con este rápido:
a=$(ldconfig -p | awk -F'> ' '{print $2}' | sort); # get them to the same format
b=$(strings -n5 /etc/ld.so.cache | sort -u);
echo -e "$a\n$b\n$b" | sort | uniq -u
Lo que comprobó si alguna biblioteca de la ldconfig -p
lista no se mencionaba en el caché. No se devolvió nada.