मुझे लगता है कि एलडी_LIBRARY का उपयोग केवल परीक्षण के लिए किया जाना चाहिए, न कि अंतिम स्थापना के लिए, क्योंकि यह मानक लाइब्रेरी स्थान का उपयोग करने से पहले निर्दिष्ट पुस्तकालय का उपयोग करने की अनुमति देता है। लेकिन लिनक्स प्रलेखन प्रोजेक्ट यह एलडी_LIBRARY_PATH के बारे में कहता है और इसे जितना संभव हो उतना स्पष्ट रखता है।
3.3.1। एलडी_LIBRARY_PATH
आप इस विशेष निष्पादन के लिए अस्थायी रूप से एक अलग लाइब्रेरी को प्रतिस्थापित कर सकते हैं। लिनक्स में, पर्यावरण परिवर्तनीय LD_LIBRARY_PATH एक निर्देशिकाओं के कोलन से अलग सेट है जहां पुस्तकालयों को निर्देशिका के मानक सेट से पहले, पहले के लिए खोजा जाना चाहिए; यह उपयोगी है जब एक नई लाइब्रेरी डीबगिंग या विशेष उद्देश्यों के लिए गैर मानक पुस्तकालय का उपयोग करना उपयोगी है। पर्यावरण परिवर्तनीय LD_PRELOAD सूचीबद्ध पुस्तकालय मानक सेट को ओवरराइड करने वाले फ़ंक्शंस के साथ सूचीबद्ध करता है, जैसे कि /etc/ld.so.preload करता है। ये लोडर /lib/ld-linux.so द्वारा कार्यान्वित किए जाते हैं। मुझे ध्यान रखना चाहिए कि, जबकि LD_LIBRARY_PATH पर कई यूनिक्स-जैसी प्रणालियों पर काम करता है, यह सभी पर काम नहीं करता है; उदाहरण के लिए, यह कार्यक्षमता एचपी-यूएक्स पर उपलब्ध है लेकिन पर्यावरण परिवर्तनीय SHLIB_PATH के रूप में, और AIX पर यह कार्यक्षमता परिवर्तनीय LIBPATH (उसी वाक्यविन्यास के साथ, एक कोलन-पृथक सूची) के माध्यम से है।
एलडी_LIBRARY_PATH विकास और परीक्षण के लिए आसान है, लेकिन सामान्य उपयोगकर्ताओं द्वारा सामान्य उपयोग के लिए एक इंस्टॉलेशन प्रक्रिया द्वारा संशोधित नहीं होना चाहिए; क्यों देखें 'क्यों LD_LIBRARY_PATH खराब है' http://www.visi.com/~barr/ldpath.html पर क्यों स्पष्टीकरण के लिए। लेकिन यह अभी भी विकास या परीक्षण के लिए उपयोगी है, और समस्याओं के आसपास काम करने के लिए जो अन्यथा आसपास काम नहीं किया जा सकता है। यदि आप नहीं चाहते हैं तो LD_LIBRARY_PATH पर्यावरण चर सेट करें, लिनक्स पर आप प्रोग्राम लोडर को सीधे भी आमंत्रित कर सकते हैं और इसे तर्क दे सकते हैं।उदाहरण के लिए, निम्नलिखित वातावरण चर LD_LIBRARY_PATH की सामग्री के बजाय दिए गए पथ का उपयोग करेगा, और दिए गए निष्पादन चलाएँ:
/lib/ld-linux.so.2 --library-पथ पथ निष्पादन योग्य
बस तर्क के बिना ld-linux.so निष्पादित करने से आपको का उपयोग करने में मदद मिलेगी, लेकिन फिर, सामान्य उपयोग के लिए इसका उपयोग न करें - ये सभी डिबगिंग के लिए लक्षित हैं।
से अगस्त 13 वीं 2013 में लिया: http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
दस्तावेज़ के अंदर लिंक पुराना है, पाया एक यहाँ इरादा लेख: http://xahlee.info/UnixResource_dir/_/ldpath.html
संपादित
आप लाइब्रेरी ओवरराइड कर सकते हैं जिसमें ld.so
रनटाइम पर लोड करने के लिए लाइब्रेरी को देखने के क्रम में बिल्डिंग/इंस्टॉलेशन के दौरान एक प्रोग्राम जुड़ा हुआ है। एक पुस्तकालय एक स्थान डी पर्यावरण चर LD_LIBRARY_PATH अंदर निर्दिष्ट में में पाया man 8 ld.so
ld.so loads the shared libraries needed by a program, prepares the pro‐
gram to run, and then runs it. Unless explicitly specified via the
-static option to ld during compilation, all Linux programs are incom‐
plete and require further linking at run time.
The necessary shared libraries needed by the program are searched for
in the following order
o Using the environment variable LD_LIBRARY_PATH
(LD_AOUT_LIBRARY_PATH for a.out programs). Except if the exe‐
cutable is a setuid/setgid binary, in which case it is ignored.
o From the cache file /etc/ld.so.cache which contains a compiled
list of candidate libraries previously found in the augmented
library path. Libraries installed in hardware capabilities
directories (see below) are prefered to other libraries.
o In the default path /lib, and then /usr/lib.
आप कहाँ हो रही है से निर्दिष्ट एक पुस्तकालय के बजाय लोड किया जाएगा डिफ़ॉल्ट पथ (
/lib
और/usr/lib
)"यह करता है * वास्तव में * से * soname * लुकअप "दबाओ? – trojanfoe
@trojanfoe: बाइनरी संगतता ("क्या यह वही लाइब्रेरी है जिसके खिलाफ प्रोग्राम मूल रूप से जुड़ा हुआ था?") _soname_ की जांच करके स्थापित किया गया है। –
ठीक है, लेकिन क्यों दावा है कि '$ LD_LIBRARY_PATH' का उपयोग करने से इस तरह के द्विआधारी संगतता परीक्षणों से बचा जाता है? कथन "मूल संस्करण के साथ संगत नहीं है" कार्यात्मक असंगतता का जिक्र है और बाइनरी असंगतता (AFAIK) नहीं है। – trojanfoe