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

ابزارهای برنامه نویسی

‏سیستم‌های GNU به همراه کامپایلری به نام gcc ارایه می شود. gcc از ابتدا مخفف GNU C Compiler بود ولی پس از مدتی که قابلیت کامپایل زبان‌های دیگری غیر از C به آن افزوده شد نام آن را GNU Compiler Colection خطاب می‌کنند. پدید آورنده‌ی اصلی GCC ریچارد استالمن، بناینگذار پروژه GNU است. نخستین نسخه GCC در سال ۱۹۸۷ انتشار یافت که یک پیشرفت مهم و اساسی در پیشبرد اهداف GNU Project محسوب می‌شد زیرا محصول جدید اولین کامپایلر بهینه سازی شده قابل حمل ANSI C به عنوان یک نرم افزار آزاد محسوب می شد. در سال ۱۹۹۲ نسخه 2.0 کامپایلر GCC عرضه شد. نسخه جدید قابلیت کامپایل کدهای ++C را نیز داشت.
در سال ۱۹۹۷ یک انشعاب آزمایشی در GCC به نام EGCC به منظور بهینه سازی کامپیایلر و پشتیبانی کامل تر از ++C ایجاد شد. در ادامه EGCC به عنوان نسل بعدی کامپایلر GCC پذیرفته شد و تکامل آن باعث انتشار نسخه سوم GCC در سال ۲۰۰۴ گردید. چهارمین نسخه از کامپایلر GCC در سال ۲۰۰۵ عرضه شد. برای اطمینان از اینکه gccرا نصب کرده‌اید یا خیر دستورات زیر را وارد کنید :

mety@localhost:~/$ gcc –version

4.1.1

mety@localhost:~/

نسخه‌ای از gcc که شما استفاده می کنید ممکن است متفاوت باشد. هر چیزی شبیه این از قبیل 3.4.6 یا 4.1.1 مناسب است. اگر پیغام خطای " command not found" را دریافت می کنید، شما gcc را نصب نکرده‌اید. اگر لینوکستان را از روی cd نصب کرده‌اید می توانید gcc را در آن پیدا کنید. اگر شما نمی‌دانید چگونه باید gcc را در سیستم خود نصب کنید می‌توانید از طریق انجمن‌های مختلف موجود در اینترنت اقدام نمایید.

معرفی کامپایلر gcc

بسیار خوب، می خواهیم کامپایل کردن یک تکه کوچک کد C را از طریق gcc به شما نشان دهیم. اینجا هدف آموزش نحوه استفاده از gcc است بنابر این در این بخش به شرح سازوکار کد C نمی‌پردازیم. در نمونه ۱.۳ کوچکترین قطعه کد C که gcc قادر به کامپایل آن است را می بینید. این کد هیچ کاری انجام نمی دهد.
نمونه  tiny.c

main()

{

}

این قطعه کد را در ویرایشگر متن خود تایپ و با نام tiny.c ذخیره کنید. شما می توانید هر نام دیگری را نیز که به پسوند c. ختم می شود انتخاب کنید. این پسوندی است که برای سورس کدهای نوشته شده با C استفاده می شود. gcc برای کامپایل یک برنامه صحت این پسوند را چک می‌کند. با در اختیار داشتن یک فایل ذخیره شده حالا می توانید به وسیله دستور زیر آنرا کامپایل کنید:
کامپایل برنامه

mety@localhost:~/$ gcc tiny.c

mety@localhost:~/

در صورتیکه که‌این فرمان با موفقیت انجام شود بدون پیغام خروجی خواهد بود. در صورتیکه هر گونه پیغام خطایی را دریافت کردید باید صحت برنامه خود را چک کنید. در صورتیکه فرض کنیم شما این برنامه هشت کاراکتری را درست نوشته باشید باید فایلی به نام a.out در دایرکتوری شما ایجاد شود. این برنامه زبان ماشینی است که از کدهای بالا ساخته شده است. در صورتیکه آنرا اجرا کنید خواهید دید که در واقع هیچ فعالیتی انجام نمی دهد. نامگذاریa.out دلایل تاریخی دارد، اما مخفف output Assembler می‌باشد.
اگر چه gcc این کدها را کامپایل کرد اما این کدها کامل نیستند اگر شما اخطار‌های gcc را فعال کنید به شما گفته خواهد شد چه کمبود‌هایی وجود دارد. با اضافه کردن گزینه‌ی Wall- به فرمان کامپایل می‌توانیماخطار‌های gcc
را فعال می کنیم:

فعال کردن نمایش اخطارها

mety@localhost:~/$ gcc -Wall tiny.c

tiny.c:2: warning: return-type defaults to `int'

tiny.c: In function `main':

tiny.c:3: warning: control reaches end of non-void function

mety@loclhost:~/$

دلیل نمایش داده شدن این پیغام‌ها کامل نبودن برنامه‌ی نوشته شده توسط ماست. برای رهایی از این پیغام‌ها باید با افزودن سازوکارهای جدید برنامه‌ای کامل‌تر ایجاد کنیم. در اینجا با افزودن دو سطر جدید به برنامه، آن را به کوتاهترین برنامه معتبر C تبدیل می‌کنیم:
نمونه  tiny2.c

int

main()

{

  return 0;

}    

حالا برنامه را با گزینهWall- کامپایل می کنیم و شاهد این خواهید بود که پیام خطایی نمایش داده نمی‌شود. گزینه‌ی مفید دیگر o filename- است که نام فایل خروجی را ( به جای a.out) مشخص می‌کند.

mety@localhost:~/$ gcc -Wall -o tiny-program tiny2.c

mety@localhost:~/$ ls

tiny2.c  tiny-program

mety@localhost:~/$ ./tiny-program

mety@localhost:~/$

برنامه سلام

هر برنامه C ملزم به داشتن تابعی به نام ()main است. اجرای برنامه از این تابع شروع می شود. می توان تمامی کدهای برنامه را در تابع ()main قرار داد اما روش مرسوم تر تقسیم برنامه به چندین تابع کوچک است. به عنوان اولین قطعه کد مفید در این مقاله به یک نمونه کلاسیک نگاه می اندازیم. سپس از کامپایل و اجرا برنامه یک پیام ساده روی صفحه نمایش شما چاپ می‌کند. برنامه تابعی به نام ()main را تعریف (define) و تابعی به نام ()printf را فراخوانی (call) می‌کند. ()prinf تابعی است که توسط کتابخانه ابزار ورودی/خروجی استاندارد (Standard Device Input/Output library) فراهم می شود که‌این کتابخانه به همراه هر سیستم GNU وجود دارد. متن برنامه کوچک ما به صورت زیر است:

نمونه  hello.c

#include

 

int main()

{

  printf("hello, world");

 

  return 0;

}

/ 0 نظر / 10 بازدید