¿Cómo obtengo una lista de nombres de archivos de bibliotecas compartidas en Linux?

¿Cómo obtengo una lista de nombres de archivos de bibliotecas compartidas en Linux?

¿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, findpero 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. ldconfigSolo 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 $HOMEy /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 stringselimina 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 -plista no se mencionaba en el caché. No se devolvió nada.

información relacionada