کتابخانه ها در لینوکس
کتاب خانه های ثابت (Static Libraries) :
با توجه به توضیحات بالا وجود اینگونه کتابخانهها در زمان کامپایل یک برنامه ضروری است. یکی از مشکلاتی که این نوع کتابخانه ها دارند این است که آنها به صورت ثابت برای اجرای هر برنامه نیاز به کامپایل دارند. به عبارتی هر برنامه به صورت مستقل نیاز به اجرا و بارگیری این بسته در حافظه سیستم دارد که منجر به مصرف زیاد حافظه و منابع سیستم نظیر دیسک می شود .
در واقع کتابخانههای ایستا زمانی مناسب هستند که یک برنامه کوچک باشد و نیاز به توابع کمی داشته باشد. اما برای برنامه های بزرگ لازم است که از کتابخانه های پویا استفاده کرد که در ادامه به آنها خواهیم پرداخت.
همچنین از دیگر معایب کار با کتابخانههای ایستا این است که در صورت بهبود این نوع کتابخانه ها به عنوان مثال اضافه شدن یک تابع و قابلیتی جدید در آن، برای استفاده از نسخه جدید لازم است که برنامه شما مجدد با آن نسخه کامپایل شود و همچنین این نوع کتابخانهها به صورت ثابت فضای حافظه را اشغال میکنند.
کتابخانه های پویا (Dynamic Libraries ) :
برای برنامههایی که از تعداد زیادی کتابخانه استفاده میکنند، لازم است که از کتابخانههای به اشتراک گذاشته شده ( Shared libraries ) استفاده کرد. همان طور که از اسم این نوع کتابخانهها مشخص است، قابلیت اشتراکگذاری توابع را برای برنامههای مختلف در زمان اجرای برنامه و یا هنگامی که نیاز دارند فراهم می کنند.
در واقع این نوع کتابخانه تنها یک بار در فضای حافظه بارگذاری می شود و دیگر برنامهها امکان استفاده از کدها و توابع بارگذاری شده در برنامه خود را دارند.
در دنیای لینوکس این دو کتابخانه را ما با فرمت .so به معنای Shared Objectو یا با فرمت .a به معنای Static Object می باشند؛ می شناسیم.