साझा लाइब्रेरी विधिपत्र शामिल तंत्र के सबसे बताते हैं, और गतिशील लोडर मैनुअल और अधिक विस्तार में चला जाता है। प्रत्येक यूनिक्स संस्करण का अपना तरीका है, लेकिन अधिकांश एक ही निष्पादन योग्य प्रारूप ( ईएलएफ ) का उपयोग करते हैं और समान गतिशील लिंकर (सोलारिस से व्युत्पन्न) होते हैं। नीचे मैं लिनक्स पर ध्यान देने के साथ सामान्य व्यवहार को संक्षेप में बताऊंगा; पूरी कहानी के लिए अपने सिस्टम के मैनुअल की जाँच करें।
संक्षेप में, जब यह एक गतिशील पुस्तकालय ( .soफ़ाइल) की तलाश में है, तो लिंकर कोशिश करता है:
LD_LIBRARY_PATHपर्यावरण चर में सूचीबद्ध निर्देशिका ( DYLD_LIBRARY_PATHOSX पर);
- निर्देशिका निष्पादन योग्य rpath में सूचीबद्ध ;
- सिस्टम खोज पथ पर निर्देशिका, जो (कम से कम लिनक्स पर)
/etc/ld.so.confप्लस /libऔर में प्रविष्टियों के होते हैं /usr/lib।
Rpath को निष्पादनीय (यह DT_RPATHया DT_RUNPATHगतिशील विशेषता) में संग्रहीत किया जाता है । इसमें निरपेक्ष पथ या पथ शामिल हो सकते हैं $ORIGIN, जो निष्पादन योग्य के स्थान के सापेक्ष पथ को इंगित करने के लिए शुरू होते हैं (जैसे कि यदि निष्पादन योग्य है /opt/myapp/binऔर इसका rpath है $ORIGIN/../lib:$ORIGIN/../pluginsतो गतिशील लिंकर अंदर दिखेगा /opt/myapp/libऔर /opt/myapp/plugins)। Rpath सामान्य रूप से निर्धारित किया जाता है जब निष्पादन योग्य संकलित किया जाता है, -rpathविकल्प के साथ ld, लेकिन आप इसे बाद में बदल सकते हैं chrpath।
आपके द्वारा वर्णित परिदृश्य में, यदि आप एप्लिकेशन के डेवलपर या पैकेजर हैं और इसे एक …/bin, …/libसंरचना में स्थापित करने का इरादा रखते हैं , तो इसके साथ लिंक करें -rpath='$ORIGIN/../lib'। यदि आप अपने सिस्टम पर एक पूर्व-निर्मित बाइनरी स्थापित कर रहे हैं, या तो लाइब्रेरी को खोज पथ पर निर्देशिका में डाल दें ( /usr/local/libयदि आप सिस्टम व्यवस्थापक हैं, अन्यथा एक निर्देशिका जिसे आप जोड़ते हैं $LD_LIBRARY_PATH), या प्रयास करें chrpath।
/lib64और/usr/lib6464 बिट binaries के लिए उपयोग किया जाता है और/libऔर/usr/lib32 बिट binaries के लिए उपयोग किया जाता है।