क्या यह सामान्य है कि LD_LIBRARY_PATH चर एक वातावरण से गायब है?


15

मैंने संयोग से पाया है कि मेरे डेबियन जेसी पर कोई LD_LIBRARY_PATHचर नहीं है (सटीक होने के printenv | grep LDलिए लिंकर से संबंधित कुछ नहीं echo "$LD_LIBRARY_PATH"दिखाता है और पता चलता है कि कुछ भी नहीं है)।

यह एक्स टर्मिनल एमुलेटर ( जो इसे सेटगिड के कारण साफ कर सकता है ) के साथ-साथ बेसिक टर्मिनल ( Ctrl+Alt+F1) में भी है।

मुझे पता है कि LD_LIBRARY_PATH बुरा माना जा सकता है इसलिए डेबियन इसे किसी भी तरह से रोक सकता है, लेकिन दूसरी तरफ इसमें कुछ फाइलें /etc/ld.so.conf.d/हैं जिनमें कुछ निर्देशिकाओं को जोड़ा जाना है LD_LIBRARY_PATH। मेरी कोई भी आरसी फाइल (जो मुझे पता है) LD_LIBRARY_PATHया तो गड़बड़ है ।

मुझे एक LD_LIBRARY_PATHचर क्यों नहीं दिख रहा है ?

जवाबों:


22

हां, यह सामान्य है कि आपके पास कोई स्पष्ट नहीं है LD_LIBRARY_PATH। यह भी पढ़ें ldconfig (8) और ld-linux (8) और के बारे में rpath । ध्यान दें कि ldconfigअपडेट /etc/ld.so.cache, नहीं LD_LIBRARY_PATH। कभी-कभी आप सेट करेंगे rpath साथ स्पष्ट रूप से एक निष्पादन की -Wl,-rpath,निर्देशिका के लिए पारित gccलिंक समय में।

यदि आपको एक की आवश्यकता है LD_LIBRARY_PATH(लेकिन आपको शायद नहीं करना चाहिए), तो इसे स्वयं सेट करें (उदाहरण के लिए ~/.bashrc)।

आप सिस्टम व्यापी सेटिंग की जरूरत है, तो आप कर सकते थे जैसे जोड़ने पर विचार /usr/local/lib/में /etc/ld.so.confऔर चलाने ldconfigवहाँ हर पुस्तकालय की स्थापना के बाद।

AFAIK $LD_LIBRARY_PATHका उपयोग केवल डायनेमिक लिंकर द्वारा किया जाता है ld-linux.so(और dlopen (3) जो इसे उपयोग करता है) निष्पादित करने के बाद (2)Ldd (1) भी देखें ।

अधिक के लिए साझा पुस्तकालयों को लिखने के लिए ड्रेपर कैसे पढ़ें ।


यह मेरी गलती थी, हालांकि मुझे पता है कि LD_LIBRARY_PATH चलने का उत्पाद है ldconfig। इस बीच यह फ़ाइलों के साथ ldconfig का इनपुट है /etc/ld.so.conf
calavera.info

1
मेरी भावना यह है कि ldconfigउपयोग न करें $LD_LIBRARY_PATH(जो केवल ld-linux.soसमय पर उपयोग किया जाता है)
बेसिल स्टायरनेविच

3
@ calavera.info यह न तो है। गतिशील लिंकर रनटाइम के आउटपुट के साथ LD_LIBRARY_PATH एक साथ उपयोग करता ldconfigहै। ldconfigन तो उपयोग करता है और न ही बदलता है LD_LIBRARY_PATH
हॉब्स

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