लिनक्स में "ldd" कमांड का उपयोग करना

Ldd कमांड का उपयोग किसी दिए गए कार्यक्रम द्वारा आवश्यक साझा पुस्तकालयों को दिखाने के लिए किया जा सकता है।

अनुपलब्ध निर्भरता होने पर काम करने के लिए यह उपयोगी है और गायब कार्यों और वस्तुओं को सूचीबद्ध करने के लिए इसका उपयोग किया जा सकता है।

ldd कमांड सिंटेक्स

Ldd कमांड का उपयोग करते समय यह उचित वाक्यविन्यास है :

ldd [विकल्प] ... फ़ाइल ...

यहां उपलब्ध ldd कमांड स्विच हैं जिन्हें उपरोक्त आदेश में [OPTION] स्थान में डाला जा सकता है:

--help इस सहायता को प्रिंट करें और बाहर निकलें - संस्करण प्रिंट संस्करण जानकारी और निकास-डी, --डेटा-रिलेक्स प्रक्रिया डेटा स्थानान्तरण -आर, - फ़ंक्शन-रिलेक्स प्रक्रिया डेटा और फ़ंक्शन स्थानान्तरण -यू, - अप्रयुक्त प्रिंट अप्रयुक्त प्रत्यक्ष निर्भरता -v, --verbose सभी जानकारी मुद्रित करें

Ldd कमांड का उपयोग कैसे करें

आप किसी भी ldd कमांड से अधिक जानकारी प्राप्त करने के लिए निम्न आदेश का उपयोग कर सकते हैं:

ldd -v / पथ / से / प्रोग्राम / निष्पादन योग्य

आउटपुट साझा पुस्तकालयों के साथ संस्करण जानकारी के साथ-साथ पथ और पते दिखाता है, जैसे:

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

यदि एसओ फ़ाइल बिल्कुल मौजूद नहीं है, तो आप निम्न आदेश का उपयोग कर गायब पुस्तकालयों को पा सकते हैं:

ldd -d पथ / से / कार्यक्रम

आउटपुट निम्न के जैसा है:

linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => ​​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 के साथ खोजना चाहते हैं, तो आपको एक आवेदन के लिए पूर्ण पथ प्रदान करना होगा, जिससे आप कई तरीकों से कर सकते हैं।

उदाहरण के लिए, फ़ायरफ़ॉक्स का मार्ग आपको मिलेगा:

फ़ायरफ़ॉक्स ढूंढें / नाम दें

हालांकि, खोज कमांड के साथ समस्या यह है कि यह न केवल निष्पादन योग्य सूचीबद्ध करेगा बल्कि हर जगह फ़ायरफ़ॉक्स स्थित है, इस तरह:

यह दृष्टिकोण एक ओवरकिल का थोड़ा सा है और आपको अपने विशेषाधिकारों को बढ़ाने के लिए सुडो कमांड का उपयोग करने की आवश्यकता हो सकती है, अन्यथा आपको बहुत सारी अनुमतियां त्रुटियों से वंचित होने की संभावना है।

एप्लिकेशन के पथ को खोजने के लिए जहांिस कमांड का उपयोग करना कहीं अधिक आसान है:

जहां फ़ायरफ़ॉक्स है

इस बार आउटपुट इस तरह दिख सकता है:

/ usr / bin / फ़ायरफ़ॉक्स

/ etc / फ़ायरफ़ॉक्स

/ usr / lib / फ़ायरफ़ॉक्स

फ़ायरफ़ॉक्स के लिए साझा लाइब्रेरी ढूंढने के लिए आपको बस इतना करना है कि निम्न आदेश टाइप करें:

ldd / usr / bin / फ़ायरफ़ॉक्स

आदेश से आउटपुट कुछ ऐसा होगा:

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 लाइब्रेरी का नाम है और हेक्स नंबर वह पता है जहां पुस्तकालय स्मृति में लोड किया जाएगा।

आप कई अन्य पंक्तियों पर ध्यान देंगे कि => प्रतीक पथ के बाद होता है। यह भौतिक बाइनरी का मार्ग है; हेक्स नंबर वह पता है जहां लाइब्रेरी लोड की जाएगी।