gcc - LD_LIBRARY_PATH बनाम LIBRARY_PATH




g++ (2)

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

मैंने LD_LIBRARY_PATH चर सेट करने का प्रयास किया लेकिन लिंकर (ld) इसके साथ विफल रहा:

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

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

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

मैंने फिर LIBRARY_PATH को सेट करने का प्रयास किया, और यह काम किया।

जीसीसी मैनुअल के मुताबिक:

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

चूंकि (जीसीसी) मैनुअल बताता है, LIBRARY_PATH काम करता है क्योंकि मैं जीसीसी से लिंक करता हूं।

परंतु..

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

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

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


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

comments से चेतावनी:





ld