2012-09-02 6 views
14

मुझे साझा पुस्तकालयों और जीसीसी के साथ समस्या है। सबसे पहले मैं अपना संकलित प्रोग्राम नहीं चला सका क्योंकि मुझे निम्न त्रुटि मिल रही थी: साझा पुस्तकालयों को लोड करते समय gcc त्रुटि।जीसीसी:/usr/local/lib में लिंक्ड लाइब्रेरी नहीं मिली हैं, लेकिन /etc/ld/so.conf.d/libc.conf इसे सूचीबद्ध करता है?

मैंने कुछ खोज किया और पाया कि ऐसा इसलिए है क्योंकि साझा लाइब्रेरी नहीं मिल सकती है। हालांकि मैंने पहले ही पहचान लिया था कि साझा लाइब्रेरी/usr/local/lib में है, जो AFAICT साझा पुस्तकालयों के लिए एक सामान्य रूप से उपयोग की जाने वाली निर्देशिका है और इसे जाने से काम करना चाहिए।

मैंने पढ़ा है कि आप LD_LIBRARY_PATH सेट कर सकते हैं, जो मेरे लिए काम करता है। हालांकि मैं इसे हर बार सेट करना नहीं चाहता हूं, मैं अपना प्रोग्राम चलाने के लिए चाहता हूं।

आगे की खोज ld.so.conf संपादित करने का सुझाव दिया।

include /etc/ld.so.conf.d/*.conf 

ld.so.conf.d निर्देशिका में देख रहे हैं मुझे libc.conf सहित फ़ाइलों की एक श्रृंखला, पता चलता है: जब मैं इस में देखा यह निम्नलिखित था। इस फाइल के अंदर है निम्नलिखित:

/usr/local/lib 

तो मेरे सवाल है, मैं क्यों मैन्युअल LD_LIBRARY_PATH जब ld.so.conf libc.conf जो/usr/स्थानीय/lib शामिल उपयोग करने के लिए प्रकट होता है स्थापित करने के लिए की जरूरत है?

क्या ऐसा कुछ है जिसे मैं यहां याद कर रहा हूं जिसे पहले कॉन्फ़िगर किया जाना चाहिए? क्या संकलन समय पर कोई विकल्प है जो मुझे याद आ रही है?

मुझे ध्यान रखना चाहिए कि संकलन करने के लिए, मुझे पुस्तकालय के पथ को निर्दिष्ट करना था, मुझे नहीं पता कि यह मेरी समस्या या सामान्य व्यवहार का लक्षण है या नहीं।

मुझे यह भी ध्यान रखना चाहिए कि जब मैं अपने सिस्टम को अन्य सिस्टम पर तैनात करता हूं तो यह मेरे लिए चिंता का विषय है। मैंने सोचा होगा कि मैं उचित जगह पर .so डाल सकता हूं और ld.so.conf के साथ गड़बड़ किए बिना अपना प्रोग्राम इंस्टॉल कर सकता हूं।

मुझे आशा है कि यह इस प्रश्न के लिए उचित मंच है, मैंने अक्सर पूछे जाने वाले प्रश्न पढ़े और मुझे लगता है कि यह ठीक है।

चीयर्स।

+1

क्या आपने प्रत्येक परिवर्तन (यानी लिखना) '/ usr/local/lib' के बाद 'ldconfig' चलाया था? –

+0

मैंने सोचा था कि ldconfig केवल conf फ़ाइलों को बदलने के बाद ही चलाना था, न कि फ़ाइल/usr/local/lib में फ़ाइल डालने पर? – Metalskin

+1

मुझे लगता है कि मैंने अपने स्वयं के प्रश्न का उत्तर दिया, ldconfig googled और ऐसा लगता है कि एक कैश है जिसे अद्यतन करने की आवश्यकता है। मैंने लाइब्रेरी के लिए ldconfig -p और grep'd किया था और यह वहां नहीं है, ऐसा लगता है कि समस्या कैश है जो ldconfig प्रबंधित करता है। धन्यवाद बेसिल! क्या अब मुझे अपने प्रश्न का उत्तर देना चाहिए? इस क्षेत्र में अन्य प्रश्न स्पष्ट नहीं करते हैं कि जब नए libs जोड़े जाते हैं तो ldconfig को चलाने की आवश्यकता होती है, वे पढ़ते हैं कि जब आप conf फ़ाइलों को बदलते हैं तो आप चलाते हैं। – Metalskin

उत्तर

18

आप ldconfig (रूट के रूप में) निर्देशिका /etc/ld.so.conf के माध्यम से या /etc/ld.so.conf.d/ तहत कॉन्फ़िगर किया गया के हर परिवर्तन के बाद चलाना चाहिए, आपके मामले में विशेष रूप से /usr/local/lib अंदर हर अपडेट करें (उदा वहाँ हर अलावा या कुछ साझा पुस्तकालयों के अद्यतन के बाद) के बाद।

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