نظرة عامة
يستعرض هذا الدليل التطبيقي خطوات كتابة برامج لغة C وتحويلها إلى برمجيات تنفيذية على بيئة لينكس عبر واجهة الأداة المعيارية cc. سنتناول بالتفصيل كيفية تهيئة حزمة أدوات التطوير، وبناء المصادر البرمجية البسيطة، واستخدام معلمات التصريف الأساسية مثل -o و-Wall، فضلاً عن تطبيق منهجية البناء المجزأ وربط الوحدات البرمجية بصورة منظمة تلائم المبتدئين.
تهيئة بيئة العمل والتحقق من وجود المترجم cc
لتجهيز نظام أوبونتو بكافة الأدوات والمكتبات اللازمة لترجمة شيفرات لغة C، نبدأ بتحديث مستودعات النظام وتثبيت حزمة التطوير عبر الأمر sudo apt-get update -qq && sudo apt-get install -y build-essential.

لمعرفة المسار الفعلي الذي يشير إليه المترجم الافتراضي داخل النظام، نقوم بتنفيذ الأمر which cc.

يقوم الأمر cc بمعالجة ملفات لغة C وترجمتها مباشرة إلى ملفات ثنائية صالحة للتشغيل.
ولمعاينة تفاصيل الإصدار المثبت وسجل الدعم، يُستخدم الأمر cc --version.
⚙️ [أهم خيارات ومحددات البناء]
-o : تعيين اسم مخصص للملف التنفيذي الناتج بعد انتهاء الترجمة.-c : إيقاف العملية بعد توليد ملف الكائن الوسيط (.o) وتجاوز مرحلة الربط.-Wall : تفعيل مختلف رسائل التنبيه والتحذير لاكتشاف أي ثغرات برمجية مبكراً.-g : حقن رموز تتبع الأخطاء داخل الملف التنفيذي لتسهيل الفحص والتنقيح.-O2 : تطبيق تقنيات تحسين الكود المتقدمة لتحقيق أفضل أداء وسرعة تشغيلية.

إنشاء أول برنامج بلغة C وتصريفه بالوضع الافتراضي
نخصص مسار عمل جديد لتجارب البرمجة والتصريف وننتقل إليه مباشرة عبر الأمر mkdir -p ~/c_practice && cd ~/c_practice.

ننشئ أول ملف شيفرة مصدرية باسم hello.c لاختبار وظائف الطباعة القياسية باستخدام الأمر cat.

لبدء تصريف الشيفرة المكتوبة في hello.c وفق الإعدادات المسبقة، ننفذ الأمر cc hello.c.
عند غياب محددات تسمية المخرج، يضع المترجم الملف التنفيذي الناتج باسم افتراضي هو a.out داخل المسار الحالي.

للتحقق من سلامة الملف الثنائي الناتج ومطابقته للوظيفة المطلوبة، نشغله عبر الأمر ./a.out.
ستظهر العبارة النصية المحددة مسبقاً في الكود “Hello, Linux cc!” على نافذة الطرفية.

تعيين اسم المخرج (-o) وتفعيل خيارات التحسين (-Wall, -O2)
ننشئ برنامجاً إضافياً لإجراء العمليات الحسابية في ملف يُدعى calc.c عبر الأمر cat.

لإجراء عملية تصريف محكمة، ندمج خيار إظهار التحذيرات -Wall مع تحسين الأداء -O2 ونحدد اسماً صريحاً للبرنامج التنفيذي وهو calc_app باستخدام الأمر cc -Wall -O2 -o calc_app calc.c.
اكتمال هذا الأمر دون إشعارات يبرهن على خلو الملف من الأخطاء وتوليد البرنامج بالاسم المحدد.

للتأكد من توليد الملف calc_app ومطالعة خصائصه وأذوناته التشغيلية، ننفذ الأمر ls -l calc_app.
تُظهر المخرجات بوضوح حجم الملف وصلاحية التنفيذ (x) الممنوحة له في النظام.

نقوم بتشغيل البرنامج للتحقق من دقته الحسابية عن طريق الأمر ./calc_app.
تطبع الشاشة نتيجة الجمع الصحيحة المنصوص عليها في الشيفرة “Result: 40”.

تقنيات التصريف المجزأ (-c) وربط ملفات الكائنات المستقلة
لبدء العمل بنظام الوحدات المقسمة، ننشئ ملف الترويسة message.h الذي يحتوي على التصريح المبدئي للدالة باستخدام الأمر cat.

ننتقل لصياغة متن الدالة وتنفيذها الفعلي في ملف مستقل باسم message.c باستخدام الأمر cat.

نجهز الملف التشغيلي الأساسي main.c الذي يستورد الترويسة ويدير نقطة الانطلاق في الدالة الرئيسية عبر الأمر cat.

نقوم بتصريف كل من message.c وmain.c على حدة لإنشاء ملفات الكائنات المقابلة دون المرور بمرحلة الربط النهائي عبر الأمر cc -c message.c main.c.
ينتج عن إدراج المحدد -c إنشاء ملفات كائنات ثنائية بامتداد .o لكل ملف مصدري.

لمعاينة ملفات الكائنات التي تم إنشاؤها في دليل العمل، ننفذ الأمر ls -l *.o.
توضح النتائج ظهور الملفين message.o وmain.o بصورة سليمة.

لدمج ملفات الكائنات المنفصلة (message.o وmain.o) في تطبيق موحد، ننفذ عملية الربط وتسمية الناتج modular_app عبر الأمر cc -o modular_app message.o main.o.
تقوم هذه الخطوة بحل الارتباطات بين الدوال وتوليد الملف الثنائي المتكامل النهائي.

لاختبار مدى كفاءة النظام المجزأ ونجاح مرحلة الربط، نشغل البرنامج النهائي بواسطة الأمر ./modular_app.
ينجح البرنامج في استدعاء الدالة الخارجية وعرض العبارة التوضيحية “Modular Build Complete!”.

تناولنا خلال هذا الدليل المهارات الأساسية لتصريف تطبيقات C داخل أوبونتو باستخدام الأمر cc، إلى جانب إتقان خيارات البناء وفصل الكود المعياري. تمنحك هذه الأسس القدرة على بناء مشاريع برمجية أكثر قوة وموثوقية في بيئات لينكس المختلفة.