2011-07-12 10 views

Respuesta

0

Establezca la variable de entorno LD_TRACE_LOADED_OBJECTS en una cadena no vacía y ejecute su archivo binario. Mire la página del manual this.

LD_TRACE_LOADED_OBJECTS 
    (ELF only) If set to non-empty string, causes the program to list its dynamic library dependencies, as if run by ldd(1), instead of running normally. 
+0

¿Qué sucede si quiero verificar la dependencia de una biblioteca compartida, no un archivo binario? En este caso, no puedo ejecutar la biblioteca compartida ... Gracias. – flyingbin

+0

Puede ejecutar ld.so en la biblioteca compartida de esta manera: /lib/ld-2.11.2.so --list /lib/libc.so.6 – ks1322

4
readelf -Wa lib.so|grep NEEDED 
+4

readelf -d lib.so es mucho más eficiente, ya que no funciona Necesito decodificar * toda * información. Además, esto no proporciona una lista completa (transitiva) de dependencias que 'ldd' proporciona; solo los directos. –

0

Ésta es la escritura del golpe sencilla yo mismo uso en Fedora, que se basa en encontrar-requiere de paquete RPM, se puede observar el interior de encontrar-requiere para encontrar qué herramientas que utiliza internamente.

#!/bin/bash 
# 
# Use rpm to recursively list dependencies of all files in a directory 
# 
# Syntax: 
# lsdep path/to/directory 
# Example: 
# lsdep /usr/src/kernels/`uname -r`/ 

find $1 -type f -exec sh -c 'res=`echo '{}' | /usr/lib/rpm/find-requires`; [ -n "$res" ] && (echo;echo file '{}'; echo $res)' \; 
Cuestiones relacionadas