Abhängige Module (gemeinsam genutzte Objekte) für eine Binärdatei erhalten
-
23-09-2019 - |
Frage
Ich habe eine binäre Datei unter Linux .. Tclsh8.4. Es hängt von bestimmten TCL*.so -Dateien ab.
Gibt es eine Möglichkeit, diese Informationen aus der Binärdatei selbst zu erhalten?
Die TCL*.SO -Dateien, von denen der binäre TCLSH8.4 in einem anderen Verzeichnis mit begrenzter Genehmigung abhängt. Was soll ich mit der Binärdatei tun, um die gleichen .so -Dateien von einem anderen Ort aus zu verwenden?
Würde das Kopieren von Dateien am selben Ort nur funktionieren?
Lösung
Verwenden ldd
dafür.
Das Kopieren der gemeinsam genutzten Objekte würde nicht funktionieren /etc/ld.so.conf
. Sie müssten verwenden $LD_LIBRARY_PATH
Um dem Lader mitzuteilen, wo er zusätzliche gemeinsame Objekte findet.
Andere Tipps
Um die Abhängigkeiten der dynamischen .so -Datei zu sehen, können Sie die verwenden ldd
Befehl. Um Informationen über die ausführbare Datei zu erhalten, überprüfen Sie die readelf
Befehl.
Wenn Sie die Abhängigkeiten mehrerer .so -Dateien überprüfen müssen, können Sie das nächste Skript verwenden:
#!/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
Ich hoffe, es hilft.