मैं कक्षा के लिए सी और सी ++ फ़ाइलों को ग्रेडिंग कर रहा हूं, और यह असाइनमेंट जीएसएल लाइब्रेरी का उपयोग करता है। चूंकि मेरे पास मेरे कंप्यूटर पर रूट अनुमति नहीं है, इसलिए मेरी जीएसएल लाइब्रेरी मेरी होम निर्देशिका में स्थापित है, और इस प्रकार मुझे कंपाइलर्स और लिंकर्स को यह कहने की ज़रूरत है कि इसे कहां मिलना है।एलडी को बताएं कि पर्यावरण चर के माध्यम से निर्देशिकाओं को देखने के लिए
यह एक समस्या है जब मैं एक कार्यक्रम अपने आप लिखते हैं, क्योंकि मैं सिर्फ जीसीसी के लिए उपयुक्त एल और मैं झंडे जोड़ नहीं है।
लेकिन जब मैं छात्र की फ़ाइलें संकलन कर रहा हूँ, मैं उनकी makefiles में से हर एक को संपादित नहीं करना चाहती। इसके बजाय, मैं उपयुक्त निर्देशिका को पर्यावरण चर में रखना चाहता हूं, ताकि यह निर्बाध रूप से हो।
इस उद्देश्य से, मैं पुस्तकालय के साथ निम्न चर निर्यात या स्थानों को शामिल किया है: C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, LIBRARY_PATH और LD_LIBRARY_PATH
लेकिन जब मैं एक छात्र की परियोजना, संकलन के साथ
gcc -Wall -o MC_thread MC_thread.c -lgsl -lgslcblas -lpthread -lm
मुझे निम्न त्रुटि मिलती है:
/usr/bin/ld: cannot find -lgsl
collect2: ld returned 1 exit status
make: *** [all] Error 1
मैं जीसीसी बनाम 4.1.2 का उपयोग कर रहा हूं। अगर मैं जीसीसी वी 4.4 का उपयोग करता हूं तो मुझे वास्तव में त्रुटि नहीं मिलती है, लेकिन मुझे कोई संकेत नहीं है। (कम से कम 4.4 संस्करण)
LIBRARY_PATH The value of LIBRARY_PATH is a colon-separated list of directories, much like PATH. When configured as a native compiler, GCC tries the directories thus specified when searching for special linker files, if it can't find them using GCC_EXEC_PREFIX. Linking using GCC also uses these directories when searching for ordinary libraries for the -l option (but directories specified with -L come first).
और फिर उसके बाद LD_LIBRARY_PATH का उपयोग जब आप उनके कार्यक्रमों के लिए करने के लिए चलाए
ld -V
GNU ld version 2.17.50.0.6-12.el5 20061020.
मानव वार्ड और मैन ld.so को पर्यावरण के वर्रों के लिए उपयोग करने का प्रयास करें। एलडी_LIBRARY_PATH काम कर सकता है। – Eugene
मुझे लगता है कि एलडी_LIBRARY_PATH का उपयोग केवल ld.so द्वारा किया जाता है, एलडी द्वारा नहीं। चूंकि यह एक संकलित-समय त्रुटि है, रन-टाइम त्रुटि नहीं, मैं पर ध्यान केंद्रित करता हूं कि क्यों LIBRARY_PATH काम नहीं करता है। दो चीजें जिन्हें मैं सत्यापित करूंगा, क्या लाइब्रेरी फ़ाइल का सही नाम है और वास्तव में जीबीसी निष्पादन वातावरण में परिभाषित LIBRARY_PATH वास्तव में है? –
'-v' विकल्प के साथ gcc चलाने का प्रयास करें और आउटपुट से पूर्ण ld आमंत्रण पोस्ट करें। –