दिलचस्प पोस्ट
एंड्रॉइड स्टूडियो प्रोजेक्ट से कैसे बाहर निकलना है डेस / विंडोज न्यूलाइन (सीआरएलएफ) को यूनिक्स न्यूलाइन (\ n) को बैश लिपि में कैसे रूपांतरित करना है? आप .NET (C # विशेष रूप से) में ऑब्जेक्ट की एक गहरी प्रतिलिपि कैसे करते हैं? JS.ParseJSON JSON में एक एकल उद्धरण के कारण "अमान्य JSON" त्रुटि फेंकता है क्या हस्ताक्षरित इंटिजर्स पर बिटवर्ड ऑपरेशन के परिणाम परिभाषित किए गए हैं? इंटरैक्शन की तालिका – पालतू जानवरों और घरों के साथ मामला एसक्यूएल पहचान (ऑटोटनम्बर) एक लेनदेन रोलबैक के साथ भी बढ़ी है बाइट्स में ऑब्जेक्ट इंस्टेंस का आकार सी # में खोजें कैसे गतिशील रूप से एक कक्षा में संपत्ति को जोड़ने के लिए? अनावश्यक देरी के बिना बाश में एक आदेश का समय समाप्त अब हमें एक व्यक्तिगत पोस्ट कैसे प्राप्त करनी चाहिए कि / v2.4 में पदावनत है? UITextField प्रोग्राम से प्रतिलिपि पेस्ट विकल्प को अक्षम कैसे करें वेब एपीआई नियंत्रक में एकाधिक एचटीपीपीओस्ट विधि विशेषता मूल्य पर आधारित DOM में एक तत्व ढूंढें संपादक / प्रदर्शन टेम्पलेट्स में अनुभागों का उपयोग करना

ld मौजूदा पुस्तकालय नहीं ढूँढ सकता

मैं डेबियन लेनी सिस्टम पर जी ++ के साथ एक आवेदन लिंक करने का प्रयास कर रहा हूं। ld शिकायत कर रहा है कि यह निर्दिष्ट पुस्तकालयों को नहीं मिल सकता है। यहाँ विशिष्ट उदाहरण ImageMagick है, लेकिन मुझे कुछ अन्य पुस्तकालयों के साथ भी इसी तरह की समस्याएं आ रही हैं I

मैं इस के साथ लिंकर बुला रहा हूँ:

g++ -w (..lots of .o files/include directories/etc..) \ -L/usr/lib -lmagic 

एलडी शिकायत:

 /usr/bin/ld: cannot find -lmagic 

हालांकि, libmagic मौजूद है:

 $ locate libmagic.so /usr/lib/libmagic.so.1 /usr/lib/libmagic.so.1.0.0 $ ls -all /usr/lib/libmagic.so.1* lrwxrwxrwx 1 root root 17 2008-12-01 03:52 /usr/lib/libmagic.so.1 -> libmagic.so.1.0.0 -rwxrwxrwx 1 root root 84664 2008-09-09 00:05 /usr/lib/libmagic.so.1.0.0 $ ldd /usr/lib/libmagic.so.1.0.0 linux-gate.so.1 => (0xb7f85000) libz.so.1 => /usr/lib/libz.so.1 (0xb7f51000) libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7df6000) /lib/ld-linux.so.2 (0xb7f86000) $ sudo ldconfig -v | grep "libmagic" libmagic.so.1 -> libmagic.so.1.0.0 

मैं इस समस्या का निदान कैसे कर सकता हूं, और क्या गलत हो सकता है? क्या मैं पूरी तरह से बेवकूफ कुछ कर रहा हूं?

वेब के समाधान से एकत्रित समाधान "ld मौजूदा पुस्तकालय नहीं ढूँढ सकता"

समस्या यह है कि लिंकर को libmagic.so तलाश है लेकिन आपके पास केवल libmagic.so.1

एक त्वरित हैक libmagic.so.1 को libmagic.so

के रूप में सिर्फ grepsedawk द्वारा तैयार की है, जवाब में g++ के -l विकल्प है, ld फोन। यदि आप इस कमांड के मैन पेज को देखते हैं, तो आप या तो कर सकते हैं:

  • g++ -l:libmagic.so.1 [...]
  • या: g++ -lmagic [...] , यदि आपके लिम्ब्स पथ में libmagic.so नाम का सिमलिंक है

डेबियन कन्वेंशन उनके रनटाइम घटकों ( libmagic1: /usr/lib/libmagic.so.1 → libmagic.so.1.0.0 ) और उनके विकास घटकों ( libmagic-dev: /usr/lib/libmagic.so → … में साझा पुस्तकालयों को अलग करने के लिए है libmagic-dev: /usr/lib/libmagic.so → … )

क्योंकि लाइब्रेरी की सोनम libmagic.so.1 , वह स्ट्रिंग जो एक्जीक्यूटेबल में एम्बेडेड हो जाती है, ताकि फ़ाइल निष्पादन योग्य चलाए जाने पर लोड हो।

हालांकि, क्योंकि पुस्तकालय को लिंकर के रूप में -lmagic रूप में निर्दिष्ट किया गया है, यह libmagic.so लिए दिखता है, यही वजह है कि विकास के लिए इसकी आवश्यकता है।

डिएगो ई। पेटेंटो देखें : लिनक्स पर यह सब कैसे काम करता है, इसके विवरण के लिए लिंकर्स और नाम ।


संक्षेप में, आपको apt-get install libmagic-dev करना चाहिए apt-get install libmagic-dev यह आपको केवल libmagic.so बल्कि अन्य फ़ाइलों को भी संकलित करने के लिए libmagic.so ही नहीं देगा।

Ubuntu में, आप libtool को स्थापित कर सकते हैं जो कि पुस्तकालयों को स्वचालित रूप से हल करता है।

 $ sudo apt-get install libtool 

इसने मेरे लिए ltdl के साथ एक समस्या का समाधान किया, जिसे libltdl.so.7 रूप में स्थापित किया गया था और -lltdl में केवल -lltdl नहीं मिला था

जब तक मैं बुरी तरह से गलत नहीं हूँ libmagic या -lmagic ImageMagick के रूप में एक ही पुस्तकालय नहीं है। आप कहते हैं कि आप छवि मैजिक चाहते हैं

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

उदाहरण के लिए:

 g++ program.cpp `Magick++-config --cppflags --cxxflags --ldflags --libs` -o "prog" 

जैसा कि लिंकर के ऊपर वर्णित है libmagic.so तलाश में है, लेकिन आपके पास केवल libmagic.so.1

इस समस्या को हल करने के लिए केवल एक अद्यतन कैश करें।

 ldconfig -v 

यह सत्यापित करने के लिए कि आप चला सकते हैं:

 $ ldconfig -p | grep libmagic 

Ubuntu repo से libgl1-mesa-dev को स्थापित करने के लिए मेरे लिए इस समस्या का समाधान किया