Ottenere moduli dipendenti (oggetti condivisi) per un binario
-
23-09-2019 - |
Domanda
Ho un file binario su Linux .. tclsh8.4. Dipende da alcuni file TCL*.so.
C'è un modo per ottenere queste informazioni dal file binario stesso?
I file tcl*.so su cui dipende il binario TCLSH8.4 è in qualche altra directory con un permesso limitato. Cosa devo fare al file binario per utilizzare gli stessi file .So da qualche altra posizione?
Copando solo i file .So.
Soluzione
Uso ldd
per questo.
Copia degli oggetti condivisi non funzionerebbe poiché il caricatore Linux cerca solo oggetti condivisi nelle directory specificate in /etc/ld.so.conf
. Dovresti usare $LD_LIBRARY_PATH
Per dire al caricatore dove trovare oggetti extra condivisi.
Altri suggerimenti
Per vedere le dipendenze del file dinamico .So è possibile utilizzare il ldd
comando. Per ottenere informazioni sul file eseguibile, controlla il readelf
comando.
Se è necessario controllare le dipendenze di più file .so, è possibile utilizzare lo script successivo:
#!/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
Spero possa essere d'aiuto.