منبع اصلی نوشتار زیر در این لینک قرار دارد

Shared Library در لینوکس چیست

کتابخانه ها ابزارهای ضروری برای برنامه نویس ها هستند. کتابخانه ها شامل کدهای از پیش کامپایل شده ای هستند که کاربردهایی مانند اتصال به پایگاه داده ها را فراهم می کنند. به طور معمول (و در زبان C) کتابخانه ها شامل توابعی هستند که یک سری از عملکردها را فراهم می کنند. به طور مثال کتابخانه pthread برای ایجاد و مدیریت نخ ها استفاده می شود.

شروع برنامه نویسی C در لینوکس

یک برنامه پیچیده و بزرگ قاعدتا از یک سری کتابخانه ها که هر یک کاربردی مشخص را فراهم می کنند، استفاده کرده اند. به طور کلی کتابخانه ها به دو دسته استاتیک (Static Library) و اشتراک شده (Sahred Library) دسته بندی می شوند.

کتابخانه glibc‌ چیست

فرایند کامپایل شدن کدهای C

برای درک کتابخانه های اشتراکی و تفاوت آن با کتابخانه های استاتیک لازم است نا گام هایی که در کامپایل شدن کدهای C اتفاق می افتد گفته شود. فرایند کامپایل کدهای C شامل چندین گام (فاز) می شود که اولین گام آن با کدهای نوشته شده توسط برنامه نویس آغاز می شود و نتیجه نهایی فرایند کامپایل ایجاد یک فایل قابل اجرا (Executable) و یا یک کتابخانه خواهد بود. مطابق شکل زیر فرایند کامپایل کردن کدهای C شامل چهار گام زیر است.

  • Preprocess
  • Compiler
  • Assembler
  • Linker

c_code_compailing

GCC چیست و نصب آن در توزیع های مختلف

 گام ۱ –  Preprocess

در این گام تمامی عبارت های پیش پردازش (Preprocess Directive) مورد پردازش قرار می گیرند. عبارت های پیش پردازش با یک #  آغاز می شوند که از جمله آنها می توان به include# و define# نام برد.

گام ۲ و ۳  –  Compiler , Assembler

پس از آنکه فایل حاوی کد مورد پیش پردازش قرار گرفت، نوبت آن می رسد که کدها کامپایل (یا ترجمه شوند). خروجی این گام تبدیل فایل های با پسوند c.‌ به فایل هایی با پسوند o. است. این فایل ها را Object File‌ می گویند. Object File‌ حاوی کدهای دودویی فایل منبع (کد اولیه) هستند، زیرا زبان ماشین، زبان دودویی است. فایل های Object با اینکه فایل های دودویی هستند، ولی فایل های قابل اجرا (Executable Files) نیستند.

گام  ۴ – Linker

خروحی گام های ۲ و ۳ فایل Object است. در نهایت در گام چهارم فایل باید همه چیز به هم پیوند زده شوند تا فایل نهایی و قابل اجرا ایجاد شود. در این فایل کامپایلر فایل های Object‌ و کتابخانه های مورد استفاده را به یکدیگر پیوند می دهد.

بنابراین ورودی کامپایلر فایل های متنی ساده که حاوی کدهای C‌ هستند و در میانه فایل های Object‌ که حاوی کدهای تبدیل شده به زبان ماشین (زبان دودویی) خواهند بود. در نهایت برای ایجاد فایل نهایی، یعنی فایل قابل اجرا، باید تمامی فایل های Object‌ و کتابخانه ها مورد استفاده قرار گیرند.

کتابخانه های اشتراکی

Shared Libraries کتابخانه هایی هستند که می توانند در زمان اجرا (Run Time) پیوند داده شوند. به عبارتی این کتابخانه زمانی که برنامه اجرا شوند در حافظه اصلی بار گذاری می شوند، بنابراین می توانند توسط چندین برنامه مورد استفاده قرار گیرند.

توجه داشته باشید که منطور از برنامه یک فرایند است که در حافظه قرار گرفته است و به همراه آن نیز فایل های کتابخانه اشتراکی نیز در حافظه قرار می گیرند. فایل های کتابخانه های اشتراکی دارای پسنوند so. هستند و بر اساس معماری ۳۲ یا ۶۴ بیتی سیستم عامل، درون یکی از دایرکتوری های usr/lib/ یا usr/lib64/ قرار دارند. این فایل ها معادل فایل های dll. در ونیدوز و فایل dylib.‌ در سیستم عامل مکینتاش هستند. کتابخانه های استاتیک بر خلاف کتابخانه های اشتراکی در زمان کامپایل به فایل های Object‌ پیوند داده می شوند. این فایل ها دارای پسوند a. هستند که به صورت فایل های Object معمولی هستند.



برچسب ها :

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

به اين صفحه امتياز دهيد