ভাগ গ্রন্থাগার হাওটুর জড়িত প্রক্রিয়া অধিকাংশ বর্ণনা দেওয়া আছে এবং গতিশীল লোডার ম্যানুয়াল আরো বিস্তারিত মধ্যে যায়। প্রতিটি ইউনিক্স ভেরিয়েন্টের নিজস্ব পদ্ধতি রয়েছে তবে বেশিরভাগ একই এক্সিকিউটেবল ফর্ম্যাট ( ইএলএফ ) ব্যবহার করেন এবং একই রকম ডায়নামিক লিংকার থাকে (সোলারিস থেকে প্রাপ্ত)। নীচে আমি লিনাক্সের উপর ফোকাস দিয়ে সাধারণ আচরণের সংক্ষিপ্তসার করব; সম্পূর্ণ গল্পের জন্য আপনার সিস্টেমের ম্যানুয়ালগুলি পরীক্ষা করে দেখুন।
সংক্ষেপে, যখন এটি ডায়নামিক লাইব্রেরি ( .so
ফাইল) সন্ধান করে লিঙ্কার চেষ্টা করে:
LD_LIBRARY_PATH
পরিবেশে পরিবর্তনশীল ( DYLD_LIBRARY_PATH
OSX- এ) তালিকাভুক্ত ডিরেক্টরিগুলি ;
- এক্সিকিউটেবলের আরপথে তালিকাভুক্ত ডিরেক্টরিসমূহ ;
- সিস্টেম অনুসন্ধানের পাথের ডিরেক্টরিগুলি, যা (অন্তত লিনাক্সে)
/etc/ld.so.conf
প্লাস /lib
এবং এন্ট্রি নিয়ে গঠিত /usr/lib
।
আরপ্যাথটি এক্সিকিউটেবলে সংরক্ষণ করা হয় (এটি DT_RPATH
বা DT_RUNPATH
গতিশীল বৈশিষ্ট্য)। $ORIGIN
এক্সিকিউটেবলের অবস্থানের সাথে সম্পর্কিত কোনও পথ নির্দেশ করতে /opt/myapp/bin
এটিতে শুরু হওয়া নিখুঁত পাথ বা পাথ থাকতে পারে (উদাহরণস্বরূপ যদি এক্সিকিউটেবলটি থাকে এবং এর আরপথ থাকে $ORIGIN/../lib:$ORIGIN/../plugins
তবে ডায়নামিক লিঙ্কারটি সন্ধান করবে /opt/myapp/lib
এবং /opt/myapp/plugins
)। আরপ্যাথটি সাধারণত নির্ধারিত হয় যখন এক্সিকিউটেবলটি সংকলিত হয়, -rpath
বিকল্প সহ ld
, তবে আপনি এটির পরে এটি পরিবর্তন করতে পারেন chrpath
।
আপনি যে দৃশ্যের বর্ণনা দিয়েছেন তাতে আপনি যদি অ্যাপ্লিকেশনটির বিকাশকারী বা প্যাকেজর হন এবং এটি একটি …/bin
, …/lib
কাঠামোতে ইনস্টল করার উদ্দেশ্যে থাকেন তবে তার সাথে লিঙ্ক করুন -rpath='$ORIGIN/../lib'
। আপনি যদি আপনার সিস্টেমে প্রাক-বিল্ট বাইনারি ইনস্টল করেন, হয় হয় লাইব্রেরিকে অনুসন্ধানের পথে একটি ডিরেক্টরিতে রেখে দিন ( /usr/local/lib
আপনি যদি সিস্টেম প্রশাসক হন, অন্যথায় আপনি যে ডিরেক্টরিতে যুক্ত করেন $LD_LIBRARY_PATH
) তবে চেষ্টা করুন chrpath
।
/lib64
এবং/usr/lib64
64 বিট বাইনারি জন্য ব্যবহার করা হয় এবং/lib
এবং/usr/lib
32 বিট বাইনারি জন্য ব্যবহৃত হয়।