ডায়নামিক লাইব্রেরিগুলি কার্নেল দ্বারা লোড করা হয়, কোনও প্রোগ্রামে পাথগুলি হার্ডকোড করা হয় না। একটি প্রোগ্রাম ঠিক বলেছে "আমার libc.so.6 দরকার"। তারপর সিস্টেম হিসাবে সংজ্ঞায়িত অনুসন্ধানসমূহ গ্রন্থাগার মার্গে /etc/ld.so.conf
সহ, /usr/lib
এবং /lib
ডিফল্ট ভাবে। এই ফাইলটিতে অতিরিক্ত কনফিগারেশন ফাইল অন্তর্ভুক্ত রয়েছে /etc/ld.so.conf.d
।
আমার 64 বিট সিস্টেমে, সংজ্ঞায়িত পাথের কারণেই libc.so.6
এটি পাওয়া যাবে :/lib/x86_64-linux-gnu/libc.so.6
/etc/ld.so.conf.d/x86_64-linux-gnu.conf
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
কোন প্রোগ্রাম দ্বারা কোন লাইব্রেরি লোড করা হয়েছে তা খুঁজে পেতে, এই ldd
হিসাবে ব্যবহার করুন ldd /bin/bash
:
linux-vdso.so.1 => (0x00007ffff1dff000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00007f9d8b3b8000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9d8b1b4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9d8ae1f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9d8b61c000)
সিমলিংক লাগানো কিছুতেই ভাঙবে না।
অনুসন্ধান করা ডিরেক্টরিগুলির একটি তালিকা পেতে, চালনা করুন:
ldconfig -v -N | grep '^/'
-v
ফাইল + ডিরেক্টরিগুলির একটি তালিকা দেখানোর কারণ হয়, -N
ক্যাশে ( /etc/ld.so.cache
)টিকে পুনরায় তৈরি হতে বাধা দেয় ।