کامپایل نرمافزار از کد منبع در لینوکس به کاربران این امکان را میدهد تا نسخههای جدید برنامهها را اجرا کرده یا نرمافزارهایی را نصب کنند که در مخازن رسمی توزیع آنها موجود نیست. این فرآیند شامل ترجمهٔ کد خوانا برای انسان به زبان ماشین، لینک کردن کتابخانهها و ساخت فایل اجرایی است.
کامپایل فرآیند تبدیل کد سطح بالا (مثل زبان C) به زبان ماشین است. این تبدیل معمولاً از طریق کامپایلر (مانند gcc) و لینککننده (linker) انجام میشود. در زبانهای مفسری مانند Python یا Perl کامپایل نیاز نیست.
gcc:
کامپایلر استاندارد GNU برای C و ++Cmake:
ابزاری برای مدیریت و اتوماتسازی فرایند ساخت برنامهها با استفاده از Makefileبرای بررسی نصب gcc:
which gcc
اگر مسیر /usr/bin/gcc
بازگردد، کامپایلر نصب است. در غیر اینصورت:
sudo apt install gcc make
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
ابزار 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) $<
کامپایل نرمافزار در لینوکس شامل مراحل دریافت سورس، پیکربندی، کامپایل و نصب است. مثال diction روند سادهای را نشان داد. با یادگیری این مراحل، کاربران میتوانند به نرمافزارهای متنوعتری دسترسی داشته باشند و در توسعهٔ اکوسیستم متنباز نقشآفرینی کنند.