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


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.