وی پی اس انگلیس ارزان با ایپی انگلیسی ترافیک نامحدود

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

Unknown

 مفهوم کتابخانه‌ها (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 استفاده می‌شوند.