मेरे पास "अल्फा" नाम का एक द्विआधारी निष्पादन योग्य है जिसे एक लिंक किए गए पुस्तकालय (libz.so.1.2.7) की आवश्यकता होती है जिसे यहां रखा गया है /home/username/myproduct/lib/libz.so.1.2.7
मैं निम्नलिखित आदेश को निष्पादित करके अपने द्विआधारी निष्पादन योग्य को जन्म देने से पहले अपने टर्मिनल उदाहरण के लिए निर्यात करता हूं।
export LD_LIBRARY_PATH=/home/username/myproduct/lib/:$LD_LIBRARY_PATH
अब, जब मैं एक और एप्लिकेशन "ब्रावो" को पेश करता हूं जिसके लिए एक ही पुस्तकालय की आवश्यकता होती है, लेकिन अलग-अलग संस्करण की, यानी (libz.so.1.2.8) जो /lib/x86_64-linux-gnu/libz.so.1.2.8
सिस्टम में उपलब्ध है
, सिस्टम निम्न त्रुटि फेंकता है।
version `ZLIB_1.2.3.3' not found (required by /usr/lib/x86_64-linux-gnu/libxml2.so.2)
अगर मैं परेशान हूं LD_LIBRARY_PATH
, तो "ब्रावो" ठीक शुरू होता है। मैं समझता हूं कि उपरोक्त व्यवहार इसलिए है क्योंकि लिंक किए गए पुस्तकालयों की तलाश LD_LIBRARY_PATH
में परिभाषित निर्देशिका पथों पर पूर्वता है /etc/ld.so.conf
और परिणामस्वरूप उपरोक्त त्रुटि हुई। मैं इस बात को लेकर उत्सुक हूं कि UNIX / LINUX के डेवलपर्स ने पदानुक्रम के अनुसार अन्य निर्देशिकाओं में लिंक्ड लाइब्रेरी की खोज करने के लिए OS का डिज़ाइन क्यों नहीं किया है यदि लाइब्रेरी का पहला उदाहरण अलग संस्करण का है।
सीधे शब्दों में कहें तो UNIX / LINUX सिस्टम निर्देशिकाओं के एक सेट के माध्यम से आगे बढ़ते हैं, जब तक कि यह आवश्यक पुस्तकालय नहीं मिल जाता। लेकिन यह तब तक ऐसा क्यों नहीं करता है जब तक कि वह अपने संस्करण के बावजूद पुस्तकालय के पहले उदाहरण को स्वीकार करने के बजाय अपेक्षित संस्करण नहीं पाता है?
libz.so.1
के लिए एक सहानुभूति हैlibz.so.1.2.8