উত্তর:
আপনার যদি এক্সিকিউটেবল থাকে এবং আপনি দেখতে চান এটি কোথায় লাইব্রেরি তুলেছে, চালান
ldd /path/to/executable
এটি ডিফল্ট অনুসন্ধানের পথের গ্রন্থাগারগুলির পাশাপাশি এই এক্সিকিউটেবলের আরপথে লাইব্রেরিগুলির জন্য অ্যাকাউন্ট করবে ।
লিনাক্সে, সিস্টেম লাইব্রেরিতে পাথগুলি দক্ষতার জন্য ক্যাশে করা হয়। /sbin/ldconfig -p
ক্যাশের সামগ্রীগুলি প্রদর্শন করে (এটি এতে সঞ্চিত রয়েছে /etc/ld.so.cache
)। এখানে একটি স্ক্রিপ্ট রয়েছে যা একটি লাইব্রেরির অবস্থান (গুলি) দেখায়:
#!/bin/sh
if [ -n "$LD_LIBRARY_PATH" ]; then
set -f
IFS=:
for d in $LD_LIBRARY_PATH; do
if [ -e "$d/$1" ]; then echo "$1"; fi
done
fi
/sbin/ldconfig -p |
awk -v needle="$1" '$1 == needle {sub(/.* => /, ""); print}'
যদি আপনার লাইব্রেরিগুলি যথাযথভাবে ক্যাশে থাকে তবে আপনি এটির মাধ্যমে এটি সন্ধান করতে সক্ষম হবেন:
ldconfig -p|grep "yourlibrary"
আপনি যদি আপনার বিতরণের সাথে উপস্থিত একটি লাইব্রেরি অনুসন্ধান করেন আপনি প্যাকেজগুলির মধ্যে ফাইলগুলির সন্ধানের বিতরণ উপায়টি ব্যবহার করতে পারেন।
এটি আরপিএমগুলি আউটপুট দেবে যা ইনস্টল করা নেই, তবে এটি আপনার সক্রিয় ইনস্টলেশন উত্সের অংশ।
আপনি একটি ইউটিলিটি যে ভালো কাজ করবে খুঁজছি হয় gcc
এর -lLIBNAME
পতাকা, নামক একটি ফাইলের জন্য যা সৌন্দর্য libLIBNAME.so
তারপর আপনি সম্ভবত একটু স্ক্রিপ্ট যে ভালো কিছু করে ব্যবহার করতে পারে:
#!/bin/sh
ldpath="${LD_LIBRARY_PATH:-$(</etc/ld.so.conf)}"
notfound=1
for libdir in ${ldpath//:/ }; do
(test -f "$libdir/lib${1}.so" && echo "$_") && notfound=0
done
[ "$notfound" -eq 0 ]