Linux में पर्यावरण चर LD_LIBRARY_PATH कैसे सेट करें


212

मैंने पहली बार कमांड निष्पादित की है: export LD_LIBRARY_PATH=/usr/local/lib

तब मैं खोला है .bash_profileफ़ाइल: vi ~/.bash_profile। इस फ़ाइल में, मैंने डाला:

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

तब यदि टर्मिनल बंद हो जाता है और फिर से चालू हो जाता है, तो टाइप करने से echo $LD_LIBRARY_PATHकोई परिणाम नहीं दिखता है।

स्थायी रूप से पथ कैसे सेट करें?


9
उसे यहां स्पष्ट इशारा करते हुए ... तुम सिर्फ तुम क्या किया ठीक करने के लिए चाहते हैं, एक को जोड़ने $, जैसेexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH
कुकी

11
इसके sudo ldconfigबाद बस चलाएं
नेकवेटी

यह मूर्खतापूर्ण हो सकता है लेकिन आपने किया $ source ~/.bash_profile? मैं उसे भूल जाता हूं। और फिर @neckTwi की तरह कहा ldconfig
ashley

जवाबों:


208

आप अधिक विवरण अपने वितरण के बारे में उदाहरण के लिए Ubuntu के तहत ऐसा करने के लिए सही रास्ता है एक कस्टम जोड़ने के लिए जोड़ना चाहिए, .confकरने के लिए फ़ाइल /etc/ld.so.conf.dउदाहरण के लिए,

sudo gedit /etc/ld.so.conf.d/randomLibs.conf

फ़ाइल के अंदर आप निर्देशिका के लिए पूरा रास्ता लिखने वाले हैं जिसमें सभी लाइब्रेरी हैं जिन्हें आप सिस्टम में जोड़ना चाहते हैं, उदाहरण के लिए

/home/linux/myLocalLibs

डायर के लिए केवल पथ जोड़ने के लिए याद रखें, फ़ाइल के लिए पूर्ण पथ नहीं, उस पथ के अंदर के सभी कार्य स्वचालित रूप से अनुक्रमित होंगे।

sudo ldconfigइस परिवाद के साथ सिस्टम को अपडेट करने के लिए सहेजें और चलाएं ।


वितरण का उल्लेख नहीं करने के लिए क्षमा करें। इसके फेडोरा 16
सिंगा

आप फेडोरा के लिए इस समाधान का उपयोग कर सकते हैं, जोकिम पाइलबॉर्ग द्वारा सुझाए गए समाधान यह उपयोगी है यदि आप इस लिबास के दृश्य को 1 विशिष्ट उपयोगकर्ता तक सीमित करने का निर्णय लेते हैं, यदि आप चाहते हैं कि एक सिस्टम वाइड लिबर टू मेरे समाधान का उपयोग करे। यह सब उस पर निर्भर करता है जो आप देख रहे हैं।
user1824407

11
क्या यह वास्तव में सही तरीका है? मान लीजिए कि आपके पास कई उपयोगकर्ता स्थानीय लाइब्रेरी का निर्माण कर रहे हैं, और आपने दोनों को /etc/ld.so.conf.d में जोड़ दिया है। अब उपयोगकर्ता A उपयोगकर्ता B के स्थानीय पुस्तकालयों से लिंक कर सकता है। अच्छा नही।
इरोजिस

/usr/local/libआमतौर पर पहले से ही है, इसलिए किसी भी फाइल को संपादित करने की कोई जरूरत नहीं है, बस sudo ldconfig
nyuszika7h

1
अजीब बात है आप सभी लोगों के साथ काम किया है, हालांकि यह मेरे लिए काम नहीं किया, जबकि जिस export LD_LIBRARY_PATH ....तरह से काम करता है !!
लेखाकार م

105

पिछला रास्ता रखें, इसे अधिलेखित न करें:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/

आप इसे अपने ~ / .bashrc में जोड़ सकते हैं:

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc

36

जोड़ना

LD_LIBRARY_PATH = "/ path / आप / want1: / path / आप / चाहते हैं / 2"

सेवा /etc/environment

उबंटू डॉक्यूमेंटेशन देखें ।

सुधार: मुझे अपनी सलाह लेनी चाहिए और वास्तव में प्रलेखन पढ़ना चाहिए। यह कहता है कि यह LD_LIBRARY_PATH पर लागू नहीं होता है: चूंकि Ubuntu 9.04 Jaunty Jackalope, LD_LIBRARY_PATH को $ HOME / .profile, / etc / प्रोफाइल, न ही आदि / पर्यावरण फ़ाइलों में सेट नहीं किया जा सकता है। आपको /etc/ld.so.conf.d/ .conf कॉन्फ़िगरेशन फ़ाइलों का उपयोग करना होगा । * तो user1824407 का उत्तर हाजिर है।


वाह, मैंने उस पृष्ठ को कई बार देखा और उस पर ध्यान नहीं दिया। इसे हाजिर करने और हमारे ध्यान में लाने के लिए धन्यवाद।
माइकल शेपर

4
उबंटू यहां एक विशेष मामला है। उबंटू का विचार है कि सभी उपयोगकर्ता समान पुस्तकालय चाहते हैं और प्रत्येक पुस्तकालय के लिए केवल एक ही स्थान है (लॉन्चपैड बग # 366728 में चर्चा पढ़ें)। हालाँकि, बहु-उपयोगकर्ता अनुसंधान या विकास प्रणालियों पर, आप चाहते हैं कि प्रत्येक उपयोगकर्ता पुस्तकालयों के अपने संस्करणों में सक्षम हो। अधिकांश लिनक्स वितरण इसकी अनुमति देते हैं और कई वर्षों से ऐसा करते हैं।
जोकिम वैगनर 10

9
यह जानने में 4 घंटे लगे कि मैं PATH और PKG_CONFIG_PATH को क्यों सेट कर सकता हूं, लेकिन LD_LIBRARY_PATH को नहीं। मैं भी नहीं कर सकता।
मिखाइल चेशकोव

@JoachimWagner हाँ, यह सही है, और क्यों conda और / या bioconda या virtenv अब विशेष पर्यावरण चर के साथ एक विशेष कार्यक्रम को लागू करने पर एक पसंदीदा तरीका है। एन्कोडेड वातावरण का उपयोग करके, अनजाने में LD_LIBRARY पथ सेट करने से प्रणालीगत समस्याएँ / समस्याएं नहीं होंगी।
Andor चुंबन

23

फ़ाइल .bash_profileकेवल लॉगिन शेल द्वारा निष्पादित की जाती है। आपको इसे डालने ~/.bashrcया बस लॉगआउट करने और फिर से लॉगिन करने की आवश्यकता हो सकती है ।


शुक्रिया जोआचिम पाइलबोर्ग। मैंने सिस्टम को रिबूट किया है और अब इसका रास्ता स्थायी रूप से सेट हो गया है।
सिंह

21

वैकल्पिक रूप से आप निर्दिष्ट लाइब्रेरी dir के साथ प्रोग्राम निष्पादित कर सकते हैं:

/lib/ld-linux.so.2 --library-path PATH EXECUTABLE

यहां अधिक पढ़ें


2
मेरी भी मदद की
spt025

17

किसी कारण से किसी ने इस तथ्य का उल्लेख नहीं किया है कि संपादन के बाद बैशके को फिर से खट्टा करने की आवश्यकता है। आप या तो लॉग आउट कर सकते हैं और वापस लॉग इन कर सकते हैं (जैसे ऊपर वर्णित है) लेकिन आप कमांड का उपयोग भी कर सकते हैं: source ~/.bashrcया . ~/.bashrc


14

रखो export LD_LIBRARY_PATH=/usr/local/libमें ~/.bashrc[स्क्रिप्ट के अंत के बीच में किसी भी ओवरराइड से बचने के लिए बेहतर करने की दिशा में, डिफ़ॉल्ट ~/.bashrcकई के साथ आता है if-elseबयान]

पोस्ट करें कि जब भी आप एक नया टर्मिनल / कोनसोल खोलेंगे, LD_LIBRARY_PATHपरिलक्षित होगा


वितरण का उल्लेख नहीं करने के लिए क्षमा करें। इसका फेडोरा 16
सिंघा

7
  1. होम फोल्डर पर जाएं और संपादन करें
  2. निम्नलिखित पंक्ति को अंत में रखें

    export LD_LIBRARY_PATH=<your path>

  3. सुरषित और बहार।

  4. इस आदेश का पालन करें

    sudo ldconfig


3

मैं मिंट 15 में 17 के माध्यम से निम्नलिखित करता हूं, ubuntu सर्वर 12.04 और इसके बाद के संस्करण पर भी काम करता है:

sudo vi /etc/bash.bashrc 

नीचे स्क्रॉल करें, और जोड़ें:

export LD_LIBRARY_PATH=.

सभी उपयोगकर्ताओं को पर्यावरण चर जोड़ा गया है।


3

आप एक कस्टम स्क्रिप्ट जोड़ने की कोशिश कर सकते हैं, कहते myenv_vars.shहैं /etc/profile.d

cd /etc/profile.d
sudo touch myenv_vars.sh
sudo gedit myenv_vars.sh

इसे खाली फ़ाइल में जोड़ें, और इसे सहेजें।

export LD_LIBRARY_PATH=/usr/local/lib

लॉगआउट और लॉगिन, LD_LIBRARY_PATHस्थायी रूप से सेट किया जाएगा।


1
बहुत बढ़िया जवाब। मेरे लिए सबसे अच्छा विकल्प है कि सिस्टम इनिशियलाइज़ेशन के दौरान हर बार एक पथ का निर्यात करें और शारीरिक रूप से संपादन / आदि / bashrc की तुलना में बहुत अधिक सुरक्षित हों
जोसेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.