يمكن استخدام الأمر 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 ، كما يلي:
- /etc/skel/.mozilla/firefox
- / الوطن // مخبأ / موزيلا / فايرفوكس
- /home//.mozilla/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 هو اسم المكتبة والرقم السداسي هو العنوان الذي سيتم تحميل المكتبة فيه في الذاكرة.
ستلاحظ على العديد من الأسطر الأخرى التي يتبعها الرمز => مسار. هذا هو المسار إلى ثنائي المادية ؛ رقم سداسي عشرية هو العنوان حيث سيتم تحميل المكتبة.