2011-02-10 11 views
18

में स्थिर स्थिर lib लिंक मुझे खेद है! मैंने इसे बहुत गुमराह किया है और जवाब नहीं मिल रहा है! यह मूर्ख है मुझे पता है।ग्रहण सीडीटी

मैं ग्रहण सीडीटी में स्थिर पुस्तकालयों (*। ए) में लिंक नहीं कर सकता। मैंने उन्हें परियोजना-> सेटिंग्स-> जीसीसी सी ++ लिंकर -> पुस्तकालयों में सूचीबद्ध किया है। मुझे यकीन है कि मैं lib सही था बनाने के लिए ... निरपेक्ष पथ का इस्तेमाल किया और मैं मिलता है:

-l नहीं मिल सकता है/usr/स्थानीय/lib/libboost_date_time.a

मुझे यकीन है कि यह बेवकूफ है जो कुछ भी मैं कर रहा हूँ कर रहा हूँ गलत कर :(

संपादित करें - और मैं उल्लेख करना चाहिए मैं रन टाइम पर पुस्तकालयों को जोड़ने कर रहा हूँ ...

+1

आप जीसीसी में libs के लिए पूर्ण पथ निर्दिष्ट कर सकते हैं ':'। तो आपके मामले में यह '-l: /usr/local/lib/libboost_date_time.a' होगा, या ग्रहण में पुस्तकालयों में ':/usr/...' जोड़ें। लेकिन उपसर्ग 'lib' का सम्मेलन और खोज पथ जोड़ना एक कारण के लिए है, इसलिए केवल सही पथों का बेहतर उपयोग करें यदि _really_ आवश्यक है। – erebos

उत्तर

18

मैं ने वही समस्या रास्ते वापस जब मैं लिनक्स के तहत हमारे कोड संकलन किया गया था के बारे में याद (एक से आ रही विंडोज़ पृष्ठभूमि) और यदि मुझे स्थिर lib के पूर्ण पथ को सही ढंग से निर्दिष्ट करने का याद किया गया तो यह भी काम नहीं किया।

क्या आप जानते हैं कि "libboost_date_time.a" से लिंक करने के लिए, आपको "lib" और ".a" के बिना "boost_date_time" निर्दिष्ट करने की आवश्यकता है? मेरे मामले में समस्या हल हो गई।/usr/local/lib किसी भी मामले में आपके रास्ते पर होना चाहिए AFAIR।

+1

मैंने ".a" को छोड़ने का प्रयास नहीं किया और मुझे अभी भी एक ही त्रुटि मिल रही है ?? – JonnyCplusplus

+2

@ राल्फ .... समझ गया ... प्रत्येक डीआईआर (-एल) और फिर प्रत्येक पुस्तकालय को "lib" या ".a" के बिना सेट करने की आवश्यकता है ... – JonnyCplusplus

+0

यदि आपके पास सीधा मार्ग है लाइब्रेरी, आप इसे '-l' ध्वज के बिना लिंक कर सकते हैं (उदाहरण के लिए,' gcc foo.cpp/usr/local/lib/libboost_date_time.a') –

7

C/C++ General->Paths & Symbols कॉन्फ़िगरेशन स्क्रीन में libs जोड़ते समय मुझे भी यही समस्या थी।

इसके बजाय GCC C++ Linker/Libraries तहत C/C++ Build -> settings स्क्रीन पर मैं lib और पुस्तकालय (एल) में .a और पुस्तकालय खोज पथ (-L) में पथ जोड़े बिना लाइब्रेरी नाम जोड़ा गया। इसने मेरी समस्या हल की

+0

@ 256: यदि इस उत्तर में मदद नहीं मिली तो शायद एक नया प्रश्न शुरू करने के लिए सबसे अच्छा है। – Enigma

+0

thx। "lib" को हटाकर, ".a" के अलावा गायब लिंक था! – smertrios

13

स्टेटिक पुस्तकालय या अभिलेखागार केवल ऑब्जेक्ट फ़ाइलों का संग्रह हैं। > सेटिंग्स - -> सी ++ लिंकर -

रूप अन्य वस्तुओं C/C++ बिल्ड तहत संग्रह जोड़ें> विविध:

enter image description here

कुछ लोगों के लिए एक पूर्ण पथ नाम निर्दिष्ट करने से अधिक खूनी हत्या रोना। मुझे लगता है कि यह अभ्यास में काम करता है (समय के साथ सिद्धांत के विपरीत), और पथ और फ़ाइल नाम तोड़ने और फिर उन्हें -L और -l के साथ निर्दिष्ट करने से भी बदतर नहीं है। और मैंने इसका उल्लेख किया कि यह वास्तव में अभ्यास में काम करता है ...

+0

मैंने कोशिश की है, ऐसा लगता है कि यह काम नहीं करता है। मैंने इसे नवीनतम मोंगोडब ड्राइवरों के साथ किया है। क्या मुझे कुछ सावधान रहना है? पथ में ".so" libs नहीं होने की तरह? –

+0

यह शायद ओपी के लिए सबसे अच्छा जवाब है, क्योंकि उनके संग्रह को 'lib' द्वारा उपसर्ग नहीं किया गया है। यह मेरे लिए एक इलाज किया। धन्यवाद! – Mawg

संबंधित मुद्दे