باستخدام الأمر "ldd" في Linux

يمكن استخدام الأمر ldd لإظهار المكتبات المشتركة المطلوبة من قبل أي برنامج.

هذا مفيد للعمل عند وجود تبعية مفقودة ويمكن استخدامها في سرد ​​الوظائف والكائنات المفقودة.

قيادة الأوامر ldd

هذا هو بناء الجملة الصحيح عند استخدام الأمر ldd:

ldd [OPTION] ... FILE ...

فيما يلي مفاتيح تبديل الأمر ldd المتاحة التي يمكن إدراجها في نقطة [OPTION] في الأمر أعلاه:

- المساعدة في طباعة هذه المساعدة والخروج - نسخ معلومات النسخة المطبوعة والخروج --d ، - نقل البيانات - عمليات إعادة توطين البيانات - r ، - بيانات عملية إعادة الترحيل والترحيل الوظيفي - u ، - unused طباعة التبعيات المباشرة غير المستخدمة -v ، --verbose طباعة جميع المعلومات

كيفية استخدام القيادة ldd

يمكنك استخدام الأمر التالي للحصول على مزيد من المعلومات من أي أمر ldd:

ldd -v / path / to / program / executable

يعرض الإخراج معلومات الإصدار بالإضافة إلى المسارات والعناوين إلى المكتبات المشتركة ، مثل هذا:

ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)

إذا كان ملف SO غير موجود على الإطلاق ، فيمكنك العثور على المكتبات المفقودة باستخدام الأمر التالي:

ldd -d path / to / program

الإخراج مشابه لما يلي:

linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => ​​not foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) / lib64 / ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)

هام: لا تقم أبدًا بتشغيل الأمر ldd ضد برنامج غير موثوق به نظرًا لأن الأمر قد ينفذ بالفعل. هذا بديل أكثر أمانًا يظهر فقط التبعيات المباشرة وليس شجرة التبعية بالكامل: objdump -p / path / to / program | grep بحاجة .

كيفية البحث عن المسار إلى تطبيق

يجب عليك توفير المسار الكامل لأحد التطبيقات إذا كنت تريد العثور على تبعياته مع ldd ، والتي يمكنك القيام بعدد من الطرق.

على سبيل المثال ، هذه هي الطريقة التي تجد بها المسار إلى Firefox :

find / -name firefox

ومع ذلك ، فإن مشكلة الأمر find ، هي أنها لن تقوم فقط بإدراج الملف القابل للتنفيذ ولكن في كل مكان يوجد فيه Firefox ، كما يلي:

هذا النهج هو نوع من المبالغة في الاستخدام وقد تحتاج إلى استخدام الأمر sudo لرفع الامتيازات الخاصة بك ، وإلا فمن المحتمل أن تحصل على الكثير من الأخطاء التي تم رفضها.

بدلاً من ذلك ، من الأسهل بكثير استخدام الأمر whereis للعثور على مسار التطبيق:

أين فايرفوكس

هذه المرة قد يبدو الإخراج كما يلي:

/ البيرة / بن / فايرفوكس

/ الخ / فايرفوكس

/ البيرة / ليب / فايرفوكس

كل ما عليك فعله الآن للعثور على المكتبات المشتركة لـ Firefox هي كتابة الأمر التالي:

ldd / usr / bin / firefox

سيكون الناتج من الأمر شيء من هذا القبيل:

linux-vdso.so.1 (0x00007ffff8364000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)
libstdc ++. so.6 => /usr/lib/libstdc++.so.6 (0x00007feb98bf4000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007feb988f6000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007feb986e0000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007feb9833c000)
/lib64/ld-linux-x86-64.so.2 (0x00007feb99397000)

linux-vdso.so.1 هو اسم المكتبة والرقم السداسي هو العنوان الذي سيتم تحميل المكتبة فيه في الذاكرة.

ستلاحظ على العديد من الأسطر الأخرى التي يتبعها الرمز => مسار. هذا هو المسار إلى ثنائي المادية ؛ رقم سداسي عشرية هو العنوان حيث سيتم تحميل المكتبة.