Obtener módulos dependientes (objetos compartidos) para un binario
-
23-09-2019 - |
Pregunta
Tengo un archivo binario en Linux .. Tclsh8.4. Depende de ciertos archivos TCL*.SO.
¿Hay alguna forma de obtener esta información del archivo binario en sí?
Los archivos TCL*.so en los que depende el TCLSH8.4 binario está en algún otro directorio que tiene permiso limitado. ¿Qué debo hacer en el archivo binario para usar los mismos archivos de alguna otra ubicación?
¿Funcionarían solo los archivos Oved .sO en la misma ubicación?
Solución
Usar ldd
para esto.
Copiar los objetos compartidos no funcionaría ya que el cargador de Linux solo busca objetos compartidos en directorios especificados en /etc/ld.so.conf
. Necesitarías usar $LD_LIBRARY_PATH
para decirle al cargador dónde encontrar objetos compartidos adicionales.
Otros consejos
Para ver las dependencias del archivo Dynamic .sO puede usar el ldd
dominio. Para obtener información sobre el archivo ejecutable, verifique el readelf
dominio.
Si necesita verificar las dependencias de múltiples archivos .sO, puede usar el siguiente script:
#!/bin/bash
# dependencies.sh
# Needs to specify the path to check for .so dependencies
if [ $# -ne 1 ]
then
echo 'You need to specify the path'
exit 0
fi
path=$1
for file in "$(find $path -name '*.so')"
do
ldd $file
done
exit 0
Espero que ayude.