Pregunta

Tengo un archivo binario en Linux .. Tclsh8.4. Depende de ciertos archivos TCL*.SO.

  1. ¿Hay alguna forma de obtener esta información del archivo binario en sí?

  2. 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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top