मैं एक साधारण सी ++ प्रोग्राम बना रहा हूं और मैं इसे हाल ही के संस्करण के साथ साझा लाइब्रेरी को सप्लाई करने के लिए विकास और परीक्षण के लिए अस्थायी रूप से स्थानापन्न करना चाहता हूं।
मैंने LD_LIBRARY_PATH वैरिएबल सेट करने की कोशिश की लेकिन लिंकर (ld) इसके साथ विफल रहा:
/ usr / bin / ld: -lyaml-cpp नहीं मिल सकता है
मुझे उम्मीद थी कि काम करने के लिए क्योंकि ld मैन पेज के अनुसार:
लिंकर आवश्यक साझा पुस्तकालयों का पता लगाने के लिए निम्नलिखित खोज पथों का उपयोग करता है: ... एक मूल लिंकर के लिए, पर्यावरण चर "LD_LIBRARY_PATH" की सामग्री ...
मैंने तब LIBRARY_PATH की स्थापना की कोशिश की, और यह काम किया।
जीसीसी मैनुअल के अनुसार:
LIBRARY_PATH का मूल्य निर्देशिकाओं की एक बृहदान्त्र-पृथक सूची है, बहुत कुछ PATH की तरह। मूल संकलक के रूप में कॉन्फ़िगर किए जाने पर, जीसीसी इस प्रकार निर्दिष्ट निर्देशिकाओं की कोशिश करता है जब विशेष लिंकर फ़ाइलों की खोज करते हैं, अगर यह उन्हें GCC_EXEC_PREFIX का उपयोग करके नहीं मिल सकता है। जीसीसी का उपयोग करके लिंक करना भी इन निर्देशिकाओं का उपयोग करता है जब -l विकल्प के लिए सामान्य पुस्तकालयों की खोज करते हैं (लेकिन -L के साथ निर्दिष्ट निर्देशिका पहले आते हैं)।
जैसा कि (GCC) मैनुअल बताता है, LIBRARY_PATH काम करता है क्योंकि मैं GCC से लिंक करता हूं।
परंतु..
- चूंकि मैं जीसीसी के साथ लिंक करता हूं, इसलिए एलडी को क्यों बुलाया जा रहा है, जैसा कि त्रुटि संदेश से पता चलता है?
- एक ही उद्देश्य से दो चर होने की बात क्या है? क्या कोई अन्य मतभेद हैं?