الحصول على وحدات تابعة (الكائنات المشتركة) للثنائي
-
23-09-2019 - |
سؤال
لدي ملف ثنائي على Linux .. Tclsh8.4. ذلك يعتمد على بعض ملفات Tcl*. لذا.
هل هناك طريقة للحصول على هذه المعلومات من الملف الثنائي نفسه؟
ملفات TCL*.SO التي تعتمد عليها TCLSH8.4 الثنائية في دليل آخر له إذن محدود. ما الذي يجب أن أفعله في الملف الثنائي من أجل استخدام الملفات نفسها. لذا ، من موقع آخر؟
هل ستعمل فقط نسخ ملفات. هكذا في نفس الموقع؟
المحلول
يستخدم ldd
لهذا.
لن يعمل نسخ الكائنات المشتركة أكثر لأن Linux Loader يبحث فقط عن الكائنات المشتركة في الدلائل المحددة في /etc/ld.so.conf
. ستحتاج إلى استخدام $LD_LIBRARY_PATH
لإخبار المحمل أين يمكن العثور على كائنات مشتركة إضافية.
نصائح أخرى
لرؤية تبعيات ملف. لذا يمكنك استخدام ملف ldd
يأمر. للحصول على معلومات حول الملف القابل للتنفيذ ، تحقق readelf
يأمر.
إذا كنت بحاجة إلى التحقق من تبعيات الملفات المتعددة ، فيمكنك استخدام البرنامج النصي التالي:
#!/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
اتمني ان يكون مفيدا.