الحصول على وحدات تابعة (الكائنات المشتركة) للثنائي

StackOverflow https://stackoverflow.com/questions/2145854

  •  23-09-2019
  •  | 
  •  

سؤال

لدي ملف ثنائي على Linux .. Tclsh8.4. ذلك يعتمد على بعض ملفات Tcl*. لذا.

  1. هل هناك طريقة للحصول على هذه المعلومات من الملف الثنائي نفسه؟

  2. ملفات 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

اتمني ان يكون مفيدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top