مفهوم کتابخانهها (Libraries) در لینوکس
🔹 کتابخانه (Library) چیست؟
در سیستمعامل لینوکس، کتابخانهها (Libraries) مجموعهای از فایلهای حاوی توابع و دستورات از پیش نوشتهشده هستند که برنامهها میتوانند از آنها استفاده کنند. به جای نوشتن کدهای تکراری، برنامهها این توابع را از کتابخانهها فراخوانی میکنند.
🔸 انواع کتابخانهها در لینوکس
1️⃣ کتابخانههای پویا (Shared Libraries – .so) 📂
✅ با نام Shared Object (.so) شناخته میشوند.
✅ در حافظه اشتراکی (Shared Memory) بارگذاری میشوند.
✅ اگر چندین برنامه از یک کتابخانه استفاده کنند، فقط یک نسخه از آن در RAM قرار میگیرد (کاهش مصرف حافظه).
🔹 مثال: libc.so.6
که شامل توابع استاندارد زبان C است.
🔹 مسیرهای رایج:
/lib
/usr/lib
/usr/local/lib
🔹 مشاهده کتابخانههای مورد نیاز یک برنامه:
ldd /bin/ls
2️⃣ کتابخانههای استاتیک (Static Libraries – .a) 📦
✅ با نام Archive (.a) شناخته میشوند.
✅ در زمان کامپایل، کد کتابخانه به فایل اجرایی اضافه میشود.
✅ برنامه مستقل از کتابخانه اجرا میشود (نیازی به نسخه خارجی ندارد).
✅ اما حجم فایل اجرایی افزایش مییابد.
🔹 مثال: libm.a
که شامل توابع ریاضی است.
🔹 مشاهده کتابخانههای استاتیک در سیستم:
ls /usr/lib/*.a
🔸 مدیریت و بررسی کتابخانهها در لینوکس
🔹 ۱. یافتن محل ذخیره کتابخانهها
برای مشاهده مسیرهای ذخیرهسازی کتابخانهها در سیستم، از این دستور استفاده کنید:
echo $LD_LIBRARY_PATH
🔹 ۲. بررسی وابستگیهای یک برنامه
برای بررسی اینکه یک برنامه به چه کتابخانههایی نیاز دارد، میتوان از ldd
استفاده کرد:
ldd /bin/bash
🔹 ۳. بهروزرسانی مسیر کتابخانهها
اگر یک کتابخانه جدید نصب کردید ولی سیستم آن را شناسایی نکرد، از این دستورات استفاده کنید:
sudo ldconfig
🔸 تفاوت بین کتابخانههای استاتیک و پویا
ویژگی | کتابخانه پویا (.so) | کتابخانه استاتیک (.a) |
---|---|---|
بارگذاری | هنگام اجرای برنامه | هنگام کامپایل برنامه |
مصرف حافظه | کمتر (اشتراکگذاری بین برنامهها) | بیشتر (کد درون فایل اجرایی قرار میگیرد) |
سرعت اجرا | سریعتر (به دلیل عدم نیاز به کامپایل مجدد) | کمی کندتر (بارگذاری بیشتر) |
انعطافپذیری | امکان بهروزرسانی بدون تغییر در برنامه | تغییر کتابخانه نیاز به کامپایل مجدد دارد |
🔸 نتیجهگیری ✅
✔ کتابخانهها نقش مهمی در عملکرد و بهینهسازی برنامههای لینوکس دارند.
✔ Shared Libraries (.so) برای کاهش مصرف حافظه و بهبود عملکرد استفاده میشوند.
✔ Static Libraries (.a) در فایل اجرایی برنامه گنجانده میشوند و نیازی به وابستگیهای خارجی ندارند.
✔ برای مدیریت کتابخانهها، دستورات مهمی مثل ldd
و ldconfig
استفاده میشوند.