साझा पुस्तकालयों के लिए "कौन सा" समकक्ष


10

मैं एक उपयोगिता की तलाश कर रहा हूं जो उसी तरह से व्यवहार करेगा which, लेकिन $ LD_LIBRARY_PATH में परिभाषित निर्देशिकाओं में साझा लाइब्रेरी (* .so) को देखने के लिए?

जवाबों:


5

यदि आपके पास एक निष्पादन योग्य है और आप यह देखना चाहते हैं कि यह कहां से पुस्तकालय उठा रहा है, तो दौड़ें

ldd /path/to/executable

यह डिफॉल्ट सर्च पथ पर पुस्तकालयों के साथ-साथ इस निष्पादन योग्य रपट में यदि कोई हो तो पुस्तकालयों का भी हिसाब रखेगा

लिनक्स पर, सिस्टम लाइब्रेरी के लिए पथ दक्षता के लिए कैश किए जाते हैं। /sbin/ldconfig -pकैश की सामग्री प्रदर्शित करता है (यह संग्रहीत है /etc/ld.so.cache)। यहाँ एक स्क्रिप्ट है जो एक लाइब्रेरी की लोकेशन दिखाती है:

#!/bin/sh
if [ -n "$LD_LIBRARY_PATH" ]; then
  set -f
  IFS=:
  for d in $LD_LIBRARY_PATH; do
    if [ -e "$d/$1" ]; then echo "$1"; fi
  done
fi
/sbin/ldconfig -p |
awk -v needle="$1" '$1 == needle {sub(/.* => /, ""); print}'

5

यदि आपके पुस्तकालयों को ठीक से कैश किया गया है, तो आपको इसे खोजने के लिए छोड़ देना चाहिए:

ldconfig -p|grep "yourlibrary"

यदि आप एक पुस्तकालय की खोज करते हैं जो आपके वितरण के साथ आया है तो आप संकुल के भीतर फाइलों की खोज के वितरण साधनों का उपयोग कर सकते हैं।

  • zypper wp "* / Library.so" (SLES और OpenSuSE)
  • यम "* / Library.so" (रेडहैट और इसके क्लोन) प्रदान करता है

यह उन आउटपुट rpms को भी स्थापित करेगा जो स्थापित नहीं हैं, लेकिन आपके सक्रिय इंस्टॉलेशन स्रोतों का हिस्सा हैं।


3

आप एक उपयोगिता है कि तरह काम करेगा के लिए देख रहे हैं gccके -lLIBNAMEझंडा, नामक एक फ़ाइल के लिए जो दिखता है libLIBNAME.soतो आप शायद एक छोटे से स्क्रिप्ट जो कुछ इस तरह करता है इस्तेमाल कर सकते हैं:

#!/bin/sh
ldpath="${LD_LIBRARY_PATH:-$(</etc/ld.so.conf)}"
notfound=1
for libdir in ${ldpath//:/ }; do
        (test -f "$libdir/lib${1}.so" && echo "$_") && notfound=0
done
[ "$notfound" -eq 0 ]

1
स्क्रिप्ट के लिए धन्यवाद, लेकिन मैं वास्तव में सोच रहा हूं कि क्या इसके लिए "मानक" उपयोगिता है।
रहमू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.