अगर लाइब्रेरी स्थापित है तो कैसे जांचें?


166

लिनक्स में, मैं कैसे जांचूं कि कोई लाइब्रेरी स्थापित है या नहीं? (पाठ्यक्रम की कमांड लाइन से)।

मेरे विशिष्ट मामले में, अब मैं जांचना चाहता हूं कि क्या libjpeg स्थापित है।


आप किस वितरण का उपयोग कर रहे हैं?
त्रिज्या

जवाबों:


209

डिस्ट्रो-इंडिपेंडेंट * फ़ैशन में ऐसा करने के लिए आप grep के साथ ldconfig का उपयोग कर सकते हैं, जैसे:

ldconfig -p | grep libjpeg

यदि libjpeg स्थापित नहीं है, तो कोई आउटपुट नहीं होगा। यदि यह स्थापित है, तो आपको उपलब्ध प्रत्येक संस्करण के लिए एक पंक्ति मिलेगी।

किसी भी लायब्रेरी के द्वारा libjpeg को बदलें जिसे आप चाहते हैं, और आपके पास लाइब्रेरी उपलब्धता के लिए जाँच का एक सामान्य, डिस्ट्रो-स्वतंत्र * तरीका है।

यदि किसी कारण से ldconfig का मार्ग निर्धारित नहीं है, तो आप आमतौर पर इसके पूर्ण पथ का उपयोग करके इसे लागू करने का प्रयास कर सकते हैं /sbin/ldconfig

** समय का 99% *


2
इसे उत्तर के रूप में स्वीकार किया जाना चाहिए। महान!

1
पुस्तकालय के देव संस्करण (हेडर) के लिए जाँच के लिए इसका उपयोग करना संभव नहीं है, है ना?
andig

2
क्या आप 99% बार निर्दिष्ट कर सकते हैं ? bash: ldconfig: command not foundडेबियन x64 जेसी पर xfce के साथ! यह डेबियन वेबसाइट पर पुनः प्रकाशित डेबियन रिलीज है ...
टॉम ज़ातो

4
@ TomášZato: ldconfigउपलब्ध नहीं है ( command not foundदिखाता है) यदि आप इसे सुपरयूज़र के बिना चलाने की कोशिश करते हैं।
गौथियर

2
/sbin/ldconfig -pजड़ होने की आवश्यकता के बिना मेरे लिए काम करता है।
पेड्रो जिमनो

34

आप अपने वितरण (योग्यता, यम, ...) के पैकेज मैनेजर से जांच कर सकते हैं, लेकिन जैसा कि आपने अपना वितरण नहीं दिया था, मैं आपको सही आदेश नहीं दे सकता।

एक और तरीका हो सकता है gcc -ljpeg, अगर आपको 'ld: लाइब्रेरी नहीं मिली -ljpeg' मिल जाए तो इसका मतलब है कि gcc को लाइब्रेरी नहीं मिली है (लेकिन इसका मतलब यह नहीं है कि यह इंस्टॉल नहीं है), अगर आपको 'अनडिफाइन्ड सिंबल' जैसा कुछ मिलता है : "_main", से संदर्भित: ... 'इसका अर्थ है कि libjpeg मिल गया है।

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* यह पता लगाने के कुछ अन्य तरीके हैं कि क्या सिस्टम में स्थापित किया गया है

यह जांचने के लिए कई अन्य तरीके हैं कि, यदि आप हमें अधिक संदर्भ देते हैं (आपको यह जांचने की आवश्यकता है कि लिबजप्रेस स्थापित किया गया है) तो हम आपको आपके विशिष्ट मामले के लिए सबसे अच्छा समाधान दे सकते हैं।


अभिवृत्ति का उपयोग करके इसे कैसे खोजें?
BBK

17

मैं यूटिस उपयोगिता का उपयोग करता हूं ।

नमूना:

l1feh4ck3r@xxx:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la

11

मैं इसका उपयोग करता हूं:

gcc -lpng

जब लिब स्थापित होता है, तो इसकी पैदावार होती है:

undefined reference to 'main'

जब परिवाद स्थापित नहीं होता है:

cannot find -lpng

9

डिबेट-आधारित वितरण के लिए आप कर सकते हैं

dpkg -s packagename

या यदि आप केवल फ़ाइल नाम जानते हैं, तो उपयोग करें

locate filename

फ़ाइल नाम आमतौर पर libsomething.so [.version] है।


1
फ़ाइल नाम भी स्थैतिक संस्करण के लिए "libsomething.a" जैसा कुछ हो सकता है।
त्रिज्या

मुझे dpkg -sउपयोगिता में सीमित लगता है , क्योंकि यह वास्तविक पैकेज का नाम चाहता है, जो लाइब्रेरी से केवल अलग या महत्वपूर्ण रूप से भिन्न हो सकता है। मैं उपयोग करता हूंdpkg -s|grep LIBRARY
ड्रू स्टीफंस

2
@dinomite apt-file आपका मित्र है :)
त्रिज्या

4

रेडहैट आधारित प्रणालियों पर, एक पुस्तकालय स्थापित है या नहीं, यह सत्यापित करने के लिए pkg-config का उपयोग कर सकता है। कई आरपीएम बायनेरिज़ वास्तव में स्थापना के साथ आगे बढ़ने से पहले एक ही जांच करते हैं, इसलिए हम इसकी सत्यता पर काफी भरोसा कर सकते हैं।

pkg-config --cflags jpeg

pkg-config --libs jpeg

pkg-config --cflags "jpeg >= 1.0.0" # for version check
pkg-config  --modversion jpeg | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }' #version check


1

यह जाँचने के लिए कि क्या यह स्थापित है, आप dpkg का उपयोग करके भी देख सकते हैं।

dpkg --list | grep [some_key_words_of_your_lib]

इसके अलावा, CentOS पर, आप यह कोशिश कर सकते हैं।

rpm -qa [lib_name]


नोट: केवल डेबियन आधारित
डिस्ट्रोस के

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