فایلهای کتابخونه در لینوکس

کتابخونه ها، کد های آماده ای هستن که برنامه ها ازشون استفاده میکنن و دیگه نیاز نیست برنامه نویس اونها رو پیاده سازی کنن.

تو لینوکس به این فایلها Shared Library یا Shared Object میگن که پسوند so دارن (تو ویندوز پسوندشون dll هست.)

کسایی که برنامه میسازن دو تا راه دارن تا از کتابخونه های مورد نظرشون استفاده کنن

  1. اونا رو مستقیم در کد برنامشون قرار بدن که میشه Static Linking
  2. از سیستم عامل اونا رو درخواست کنن که میشه Dynamic Linking

چون Static Linking باعث افزایش حجم برنامه و مشکلات دیگه ای میشه معمولا گزینه دوم استفاده میشه

برای اینکه ببینید یک فایل اجرایی باینری، به چه کتابخونه هایی نیاز داره از دستور ldd استفاده میکنیم

مسیرهایی که سیستم عامل برای پیدا کردن کتابخونه ها میگرده در فایل etc/ld.so.conf/ قرار داده میشه. برای اینکه روال بارگذاری کتابخونه ها سریعتر انجام بشه لیست کتابخونه های پیدا شده، در فایل etc/ld.so.cache/ گذاشته میشه تا هر دفعه لازم نباشه تمام مسیر ها ی تعریف شده جستجو بشن.

برای اضافه کردن کتابخونه های مورد نظرتون به سیستم عامل میتونید مسیر حاوی کتابخونه هاتون رو به ldconfig بدید تا اونو بگرده و کتابخونه ها رو پیدا کنه بعد ldconfig فایل etc/ld.so.cache/ رو به روز میکنه مثل

اگه دوباره ldconfig رو اینبار بدون آرگومان اجرا کنید، میره مسیرهای موجود تو etc/ld.so.conf/ رو میگرده و بعد کش رو به روز میکنه و دستور قبلی شما بی اثر میشه

پس برای اینکه کتابخونه های مورد نظرتون همیشه تو سیستم ثبت بشن باید آدرس مسیر اونها رو به فایل etc/ld.so.conf/ اضافه کنید

همچنین برای اینکه ldconfig یک مسیر رو بگرده بدونه اینکه فایل etc/ld.so.cache/ به روز بشه باید از سوییچ n- استفاده کنید

برای دیدن لیست تمام کتابخونه هایی که پیدا شده از سوییچ v-  استفاده کنید

البته شاید شما دسترسی های لازم رو نداشته باشید یا اینکه یه دلیل دیگه ای داشته باشید که نخواید کتابخونه های کلی سیستم رو عوض کنید، یه راه دیگه این هست که مسیر کتابخونه رو به متغیر محیطی `LD_LIBRARY_PATH` اضافه کنید

سیستم عامل برای بارگذاری کتابخونه ها، قبل از بارگذاری فایل etc/ld.so.cache/ مسیرهای ‍‍‍‍`LD_LIBRARY_PATH` رو جستجو میکنه

منبع ۱

منبع ۲

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *