दिलचस्प पोस्ट
अजगर: लिपियों की अपनी निर्देशिका में लिपियों की कार्यशील निर्देशिका बदलें स्पार्क में विभाजन कैसे काम करता है? जेएलैबल में सही-सही चिन्ह कैसे करें? नेमस्पेस 'System.Data.SqlServerCe' नहीं मिल सकता एक विशिष्ट शब्द का उपयोग करके और किसी अन्य एक्सेल शीट को चिपकाने में एक पंक्ति की प्रतिलिपि कैसे करें? कॉन्स्ट मान द्वारा लौटने का उद्देश्य? Google मैप्स और रिचफेस 3.3.3 (प्रोटोटाइप.जेएस 1.6.0.3) संभव असंगति प्रगति पट्टी अग्रभूमि रंग कैसे दृश्य स्टूडियो को आउटपुट निर्देशिका में एक DLL फ़ाइल की प्रतिलिपि बनाने के लिए? मैं अपने अप्रतिबंधित / दुर्लक्षित फाइलों / फ़ोल्डरों को अपने काम की नकल में कैसे हटा सकता हूं? जावा एफएक्स एफएक्सएमएल नियंत्रक – कन्स्ट्रक्टर बनाम प्रारंभिक विधि स्ट्रिंग स्ट्रीम क्यों विफलता पर लक्ष्य का मूल्य बदलता है? आर में एक स्ट्रिंग कन्टाटाइनेशन ऑपरेटर बनाना JTable मॉडल श्रोता, बहुत जल्दी डाली गई पंक्तियों का पता लगाता है (इससे पहले कि वे खींचा जाते हैं) FileDialog काम नहीं करता है

LD_LIBRARY_PATH बनाम LIBRARY_PATH

मैं एक साधारण सी ++ प्रोग्राम का निर्माण कर रहा हूं और मैं एक सिस्टम के लिए और अधिक हालिया संस्करण के साथ साझा किए गए लाइब्रेरी को अस्थायी रूप से स्थानांतरित करना चाहता हूं, विकास और परीक्षण के लिए।

मैंने LD_LIBRARY_PATH चर सेट करने की कोशिश की लेकिन लिंकर (एलडी) इसके साथ विफल रहा:

/ usr / bin / ld: नहीं मिल सकता- alaml-cpp

मुझे उम्मीद थी कि काम करने के लिए क्योंकि एलडी मैन पेज के अनुसार:

आवश्यक साझा पुस्तकालयों को खोजने के लिए लिंकर निम्नलिखित खोज पथ का उपयोग करता है: … एक देशी लिंकर के लिए, पर्यावरण चर "LD_LIBRARY_PATH" की सामग्री …

मैंने तब LIBRARY_PATH सेट करने की कोशिश की, और उसने काम किया

जीसीसी मैनुअल के अनुसार:

LIBRARY_PATH का मूल्य निर्देशिकाओं की एक बृहदान्त्र से अलग सूची है, जैसे PATH जब एक मूल कंपाइलर के रूप में कॉन्फ़िगर किया जाता है, तो GCC विशेष लिंकर फ़ाइलों के लिए खोज करते समय इस प्रकार निर्दिष्ट निर्देशिकाओं का प्रयास करता है, अगर उन्हें GCC_EXEC_PREFIX का उपयोग नहीं किया जा सकता है जी-सी के उपयोग से लिंक इन निर्देशिकाओं का उपयोग करता है, जब -l ऑप्शन के लिए सामान्य लाइब्रेरीज़ की खोज हो रही है (लेकिन -एल के साथ निर्दिष्ट निर्देशिका पहले आए)।

जैसा कि (जीसीसी) मैन्युअल सुझाव देते हैं, LIBRARY_PATH इसलिए काम करता है क्योंकि मैं जीसीसी के साथ लिंक करता हूं।

परंतु..

  • चूंकि मैं जीसीसी के साथ लिंक करता हूं क्योंकि एलडी को बुलाया जा रहा है, जैसा कि त्रुटि संदेश से पता चलता है?
  • एक ही उद्देश्य की सेवा करने वाले दो चर वाले होने का क्या मतलब है? क्या कोई अन्य अंतर है?

Solutions Collecting From Web of "LD_LIBRARY_PATH बनाम LIBRARY_PATH"

LIBRARY_PATH का उपयोग संकलन से पहले जीसीसी द्वारा स्टैटिक लाइब्रेरीज़ वाले निर्देशिका को खोजने के लिए किया जाता है, जिन्हें आपके प्रोग्राम से लिंक किया जाना चाहिए।

LD_LIBRARY_PATH को आपके प्रोग्राम द्वारा साझा लाइब्रेरीज़ वाली निर्देशिकाओं को खोजने के लिए उपयोग किया जाता है, जो सफलतापूर्वक संकलित और लिंक किए गए हैं।

संपादित करें: जैसा कि नीचे बताया गया है, आपकी लाइब्रेरी स्थिर या साझा की जा सकती है यदि यह स्थिर है तो कोड को आपके प्रोग्राम में कॉपी किया जाता है और आपके प्रोग्राम को संकलित और लिंक किए जाने के बाद आपको पुस्तकालय की खोज करने की आवश्यकता नहीं है। यदि आपकी लाइब्रेरी साझा की जाती है तो उसे आपके प्रोग्राम से गतिशील रूप से लिंक किया जाना चाहिए और ऐसा तब होगा जब LD_LIBRARY_PATH नाटक में आता है

कार्यक्रम आरंभ होने पर LD_LIBRARY_PATH खोजा जाता है, LIBRARY_PATH लिंक समय पर खोज करता है।

चूंकि मैं जीसीसी के साथ लिंक करता हूं, क्यों कि एलडी को बुलाया जा रहा है, जैसा कि त्रुटि संदेश से पता चलता है?

जीसीसी आंतरिक रूप से एलसीडी कॉल करता है जब यह लिंकिंग मोड में होता है।