~2 min read • Updated Jul 20, 2025

1. مقدمه


کامپایل نرم‌افزار از کد منبع در لینوکس به کاربران این امکان را می‌دهد تا نسخه‌های جدید برنامه‌ها را اجرا کرده یا نرم‌افزارهایی را نصب کنند که در مخازن رسمی توزیع آن‌ها موجود نیست. این فرآیند شامل ترجمهٔ کد خوانا برای انسان به زبان ماشین، لینک کردن کتابخانه‌ها و ساخت فایل اجرایی است.


2. چرا نرم‌افزار را کامپایل کنیم؟


  • دسترسی: برخی برنامه‌ها در مخازن توزیع موجود نیستند و تنها از طریق کامپایل در دسترس‌اند
  • به‌روز بودن: نسخه‌های جدید ممکن است در مخازن توزیع قرار نگرفته باشند؛ کامپایل امکان اجرای آخرین نسخه را فراهم می‌کند

3. کامپایل چیست؟


کامپایل فرآیند تبدیل کد سطح بالا (مثل زبان C) به زبان ماشین است. این تبدیل معمولاً از طریق کامپایلر (مانند gcc) و لینک‌کننده (linker) انجام می‌شود. در زبان‌های مفسری مانند Python یا Perl کامپایل نیاز نیست.


4. ابزارهای مورد نیاز


  • gcc: کامپایلر استاندارد GNU برای C و ++C
  • make: ابزاری برای مدیریت و اتومات‌سازی فرایند ساخت برنامه‌ها با استفاده از Makefile
  • Meta-package توسعه: بسته‌هایی مانند build-essential یا base-devel برای نصب مجموعه‌ای از ابزارهای توسعه

برای بررسی نصب gcc:

which gcc

اگر مسیر /usr/bin/gcc بازگردد، کامپایلر نصب است. در غیر این‌صورت:

sudo apt install gcc make

5. مراحل کامپایل برنامه diction


مرحلهٔ اول: دریافت سورس‌کد

mkdir ~/src
cd ~/src
wget https://ftp.gnu.org/gnu/diction/diction-1.11.tar.gz
tar xzf diction-1.11.tar.gz
cd diction-1.11

می‌توانید قبل از استخراج، محتوای آرشیو را مشاهده کنید:

tar tzvf diction-1.11.tar.gz | head

مرحلهٔ دوم: بررسی ساختار سورس

فایل‌هایی مانند README و INSTALL را مطالعه کنید. فایل‌های .c شامل کد اصلی و فایل‌های .h شامل سرآیندها هستند. فایل‌های configure و Makefile.in برای ساخت استفاده می‌شوند.

less diction.c

مرحلهٔ سوم: پیکربندی محیط ساخت

./configure

این اسکریپت تنظیمات سیستم را بررسی کرده و فایل Makefile و config.h ایجاد می‌کند.

less Makefile

مرحلهٔ چهارم: ساخت برنامه

make

اگر موفق باشد، فایل‌هایی مثل diction و style ایجاد می‌شوند:

ls

اجرای دوباره make منجر به پیام:

make: Nothing to be done for 'all'.

برای تست بازسازی هدف‌ها:

rm getopt.o
make
touch getopt.c
make

مرحلهٔ پنجم: نصب برنامه

sudo make install

برنامه به مسیر /usr/local/bin نصب می‌شود. برای بررسی:

which diction
man diction

6. قدرت make


ابزار make می‌تواند فقط اجزای تغییرکرده را کامپایل کند و برای پروژه‌های بزرگ (مثل کرنل لینوکس) حیاتی است.

نمونه‌ای از تعریف هدف:

diction: diction.o sentence.o misc.o getopt.o getopt1.o
	$(CC) -o $@ $(LDFLAGS) diction.o sentence.o misc.o getopt.o getopt1.o $(LIBS)

.c.o:
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $<

7. نتیجه‌گیری


کامپایل نرم‌افزار در لینوکس شامل مراحل دریافت سورس، پیکربندی، کامپایل و نصب است. مثال diction روند ساده‌ای را نشان داد. با یادگیری این مراحل، کاربران می‌توانند به نرم‌افزارهای متنوع‌تری دسترسی داشته باشند و در توسعهٔ اکوسیستم متن‌باز نقش‌آفرینی کنند.


Written & researched by Dr. Shahin Siami