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

در تمامی سیستم عامل های شبه یونیکس (Unix-Like Operating Systems) نیاز به کتابخانه های زبان C‌ است به طوری که بتوان توایع فراخوان سیستمی (System Call) و دیگر توابع مانند ()open و ()malloc را تعریف و استفاده کرد. Gnu C Library که تحت کتابخانه glibc شناخته می شود، پیاده سازی توابع استاندارد زبان C  و Posix و برخی دیگر از ابزارها هستند که تحت مجوز Gnu منتشر می شود.

کتابخانه glibc به صورت پیشفرض و در زمان نصب یک توزیع لینوکسی بر روی آن نصب می شود. در حال حاظر و زمان نوشتن این مطلب نسخه ۲.۲۴ آخرین و بروز ترین نسخه کتابخانه glibc‌ است که در دسترس قرار دارد.

برای استفاده از این کتابخانه در پروژه های خود قاعدتا باید با اصول و اساس زبان C‌ آشنا باشید. توابع کتابخانه glibc‌ در غالب فایل های سرآیندی (Header Files) مانند stdio.h و stdlib.h‌ پیاده سازی شده اند که باید از آنها در پروژه های خود، فایل سرآیند متناسب را فراخوانی کنیم. توابع دیگری که در استاندارد Posix مانند تابع ()getpid‌، نیز در کتابخانه glibc تعریف شده اند.

به طور مثال فرض کنید که می خواهید یک فایل را برای خواندن/نوشتن باز کنید. برای دسترسی به یک فایل بر روی سیستم فایل نیاز است تا فراخوانی سیستمی صورت گیرد، اما خود شما به عنوان برنامه نویس امکان استفاده از فراخوان سیستمی را ندارید، بلکه توابع نوشته شده در کتابخانه glibc‌ این امکان را برای شما فراهم کرده اند. به طور مثال تابع ()open با اجرای فراخوان های سیستمی مناسب به طور غیر مستقیم اجازه خواندن از فایل و نوشتن بر روی فایل را به شما می دهد.

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

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

با توجه به دو لینک بالا کامپایلر gcc‌ از محل قرار گیری فایل های سرآیند کتابخانه glibc‌ آگاه و مطلع است. محل پیشفرض دایرکتوری usr/include/ است. کتابخانه glibc‌ در کنار توابع استاندارد C و استاندارد POSIX‌ برخی از ماکروها (Macros) را نیز تعریف کرده است. به طور مثال در فایل سرآیند stdlib.h ماکرو abs برای محاسبه قدر مطلق عدد تعریف شده است که شما با فراخوانی فایل سرآیند stdlib.h می توانید از آن استفاده کنید.

با توجه به معماری ۳۲ یا ۶۴ بیتی سیستم عاملی که استفاده می کنید، فایل های مربوط به کتابخانه glibc‌ (منظور فایل های سرآیند نیست) در دایرکتوری lib/ یا lib64/ قرار دارند. در کنار کتابخانه glibc‌ کتابخانه های دیگری مانند eglibc, uclibc و dietlibc‌ نیز که کتابخانه های استاندارد C را پیاده سازی کرده اند وجود دارند.

 کتابخانه glibc‌ توابع و واسط هایی (Interfaces) را فراهم کرده است که اجازه می دهد به راحتی توسط زبان C‌ در سیستم عامل لینوکس برنامه نویسی کنید. glibc‌ دارای توابع و واسط هایی برای :

  • کار با فایل ها.
  • واسط هایی برای سیستم فایل و دایرکتوری ها.
  • انجام ارتباط میان فرایند ها توسط مکانیزم های Pipe و FIFO.
  • ایجاد سوکت های شبکه.
  • واسط هایی سطح پایین برای تعامل با ترمینال.
  • ایجاد فرایندها.
  • کنترل کارها یا Job Control
  • دسترسی به اطلاعات کاربران و گروه ها.
  • مدیریت سیستم مانند تغییر نام هاست (Hostname)
  • ایجاد نخ های POSIX‌
  • و بیساری از کاربردهای دیگر …