ভাগ করা লাইব্রেরির জন্য "যা" সমতুল্য


9

আমি এমন একটি ইউটিলিটি সন্ধান করছি যা একইরকম আচরণ করবে whichতবে shared LD_LIBRARY_PATH সংজ্ঞায়িত ডিরেক্টরিগুলিতে ভাগ করে নেওয়া লাইব্রেরি (* .so) সন্ধান করতে চাই?

উত্তর:


5

আপনার যদি এক্সিকিউটেবল থাকে এবং আপনি দেখতে চান এটি কোথায় লাইব্রেরি তুলেছে, চালান

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}'

5

যদি আপনার লাইব্রেরিগুলি যথাযথভাবে ক্যাশে থাকে তবে আপনি এটির মাধ্যমে এটি সন্ধান করতে সক্ষম হবেন:

ldconfig -p|grep "yourlibrary"

আপনি যদি আপনার বিতরণের সাথে উপস্থিত একটি লাইব্রেরি অনুসন্ধান করেন আপনি প্যাকেজগুলির মধ্যে ফাইলগুলির সন্ধানের বিতরণ উপায়টি ব্যবহার করতে পারেন।

  • জিপার ডাব্লুপিপি "* / Library.so" (এসইএলএস এবং ওপেনসুএস)
  • yum "* / Library.so" সরবরাহ করে (রেডহ্যাট এবং এর ক্লোনস)

এটি আরপিএমগুলি আউটপুট দেবে যা ইনস্টল করা নেই, তবে এটি আপনার সক্রিয় ইনস্টলেশন উত্সের অংশ।


3

আপনি একটি ইউটিলিটি যে ভালো কাজ করবে খুঁজছি হয় 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 ]

1
স্ক্রিপ্টের জন্য ধন্যবাদ তবে আমি সত্যিই ভাবছি যে এর জন্য কোনও "স্ট্যান্ডার্ড" ইউটিলিটি আছে কিনা।
— রাহমু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.