আমার কাছে "আলফা" নামে একটি বাইনারি এক্সিকিউটেবল রয়েছে যার জন্য একটি লিঙ্কযুক্ত লাইব্রেরি প্রয়োজন (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
গ্রন্থাগারগুলির সন্ধান করার সময় সংজ্ঞায়িত ডিরেক্টরি পাথগুলির চেয়ে বেশি অগ্রাধিকার নেয় এবং ফলস্বরূপ উপরের ত্রুটি ঘটেছিল। আমি কেবল কৌতূহল বোধ করি কেন ইউনিক্স / লিনাক্সের বিকাশকারীরা হায়ারার্কি অনুযায়ী অন্যান্য ডিরেক্টরিতে লিঙ্কিত লাইব্রেরিগুলি অনুসন্ধানের জন্য ওএস ডিজাইন করেননি যদি গ্রন্থাগারের প্রথম উদাহরণটি ভিন্ন সংস্করণে থাকে।
সহজ কথায় বলতে গেলে, ইউনিক্স / লিনাক্স সিস্টেম প্রয়োজনীয় পাঠাগারটি না পাওয়া পর্যন্ত ডিরেক্টরিগুলির একটি সেট দিয়ে অতিক্রম করে। তবে গ্রন্থাগারের সংস্করণ নির্বিশেষে গ্রন্থাগারের প্রথম উদাহরণটি গ্রহণ না করে প্রত্যাশিত সংস্করণ না পাওয়া পর্যন্ত এটি কেন একই কাজ করে না?
libz.so.1
এটির একটি সিমিলিংকlibz.so.1.2.8