~2 min read • Updated Jul 20, 2025
1. مقدمه
کامپایل نرمافزار از کد منبع در لینوکس به کاربران این امکان را میدهد تا نسخههای جدید برنامهها را اجرا کرده یا نرمافزارهایی را نصب کنند که در مخازن رسمی توزیع آنها موجود نیست. این فرآیند شامل ترجمهٔ کد خوانا برای انسان به زبان ماشین، لینک کردن کتابخانهها و ساخت فایل اجرایی است.
2. چرا نرمافزار را کامپایل کنیم؟
- دسترسی: برخی برنامهها در مخازن توزیع موجود نیستند و تنها از طریق کامپایل در دسترساند
- بهروز بودن: نسخههای جدید ممکن است در مخازن توزیع قرار نگرفته باشند؛ کامپایل امکان اجرای آخرین نسخه را فراهم میکند
3. کامپایل چیست؟
کامپایل فرآیند تبدیل کد سطح بالا (مثل زبان C) به زبان ماشین است. این تبدیل معمولاً از طریق کامپایلر (مانند gcc) و لینککننده (linker) انجام میشود. در زبانهای مفسری مانند Python یا Perl کامپایل نیاز نیست.
4. ابزارهای مورد نیاز
gcc:کامپایلر استاندارد GNU برای C و ++Cmake:ابزاری برای مدیریت و اتوماتسازی فرایند ساخت برنامهها با استفاده از 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