Skip to main content

"Ldd" कमांड के साथ प्रोग्राम की साझा लाइब्रेरी खोजें

विंडोज कमांड लाइन ट्यूटोरियल - 8 - नष्ट करने और फ़ाइलें करने के लिए जोड़ (जून 2026)

विंडोज कमांड लाइन ट्यूटोरियल - 8 - नष्ट करने और फ़ाइलें करने के लिए जोड़ (जून 2026)
Anonim

उपयोग ldd किसी दिए गए कार्यक्रम द्वारा आवश्यक साझा पुस्तकालयों को दिखाने के लिए आदेश - अनुपलब्ध निर्भरता होने पर काम करने के लिए उपयोगी। कमांड में लापता कार्यों और वस्तुओं को भी सूचीबद्ध किया गया है।

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

त्रुटियों से बचने के लिए ldd कमांड के लिए उचित वाक्यविन्यास का निरीक्षण करें:

ldd विकल्प … फ़ाइल …

उपलब्ध एक या अधिक उपलब्ध ldd कमांड स्विच का उपयोग करें, में डाला गया विकल्प उपरोक्त आदेश में स्थान:

--help | इस मदद को प्रिंट करें और बाहर निकलें --वर्जन | प्रिंट संस्करण जानकारी और बाहर निकलें -d, --डेटा-रिलाक्स | प्रक्रिया डेटा स्थानान्तरण -r, - समारोह-रिलेक्स | प्रक्रिया डेटा और समारोह स्थानान्तरण -u, --unused | अप्रयुक्त प्रत्यक्ष निर्भरता मुद्रित करें -v, --verbose | सभी जानकारी मुद्रित करें

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 कमांड को चलाएं क्योंकि ldd वास्तव में इसे निष्पादित कर सकता है। इसके बजाए, एक सुरक्षित विकल्प का उपयोग करें जो केवल प्रत्यक्ष निर्भरता दिखाता है न कि संपूर्ण निर्भरता पेड़:

$ objdump -p / पथ / से / कार्यक्रम | grep की जरूरत है

किसी एप्लिकेशन को पथ कैसे खोजें

यदि आप अपनी निर्भरताओं को ldd के साथ खोजना चाहते हैं, तो आपको एक आवेदन के लिए पूर्ण पथ प्रदान करना होगा, जिसे आप कई तरीकों से कर सकते हैं।

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

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

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

  • /etc/skel/.mozilla/firefox
  • / घर // कैश / मोज़िला / फ़ायरफ़ॉक्स
  • /home//.mozilla/firefox
  • / Usr / bin / फ़ायरफ़ॉक्स
  • / Usr / lib / फ़ायरफ़ॉक्स
  • / Usr / lib / फ़ायरफ़ॉक्स / फ़ायरफ़ॉक्स

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

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

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

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

/ 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)

लिनक्स-vdso.so.1 पुस्तकालय का नाम है और हेक्स संख्या वह पता है जहां पुस्तकालय स्मृति में लोड किया जाएगा।

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