مقدمة عامة
يوفر نظام أوبونتو لينكس أداة c89 بوصفها الواجهة المعيارية المعتمدة ضمن مواصفات POSIX لبناء برمجيات لغة C المتوافقة مع معيار C89/ANSI C التاريخي. يستعرض هذا الدليل التطبيقي كيفية توظيف هذا المترجم في بيئة سطر الأوامر، متناولاً دورة التجميع المتكاملة بدءاً من المعالجة الأولية وتوليد الملفات الهدفية (Object Files) وصولاً إلى ربط المكتبات الخارجية وتوليد الملفات التنفيذية.
تهيئة بيئة العمل وتثبيت حزمة c89
للشروع في تطبيق الأمثلة، يتعين أولاً تحديث فهرس حزم النظام وتثبيت حزمتي gcc وc89 الضروريتين لإنشاء بيئة الترجمة.

للتحقق من إتاحة أداة c89 في مسارات النظام وجاهزيتها للتشغيل، ننفذ أمر فحص المسار which c89.

تُستخدم أداة c89 لترجمة مصادر C بما يتوافق كلياً مع المعيار القياسي ANSI C (المعروف بـ C89/C90).
وتعمل هذه الأداة داخل أوبونتو كغلاف نصي (Wrapper) يوجه أوامر البناء إلى المحرك الخلفي لمترجم gcc؛ لذا يمكن استعراض تفاصيل الإصدار والبيئة التحتية عبر تشغيل الأمر c89 --version 2>/dev/null || gcc -v.
⚙️ [أهم خيارات التشغيل]
-c : الاكتفاء بإنشاء الملفات الهدفية ذات الامتداد .o مع تخطي مرحلة الربط النهائي.-o : تعيين اسم مخصص للملف التنفيذي المُراد إنشاؤه.-O : تشغيل خوارزميات تحسين الكود لرفع سرعة وكفاءة البرنامج.-s : تجريد الملف التنفيذي من جداول الرموز ومعلومات التنقيح لتقليل حجمه على القرص.-g : إدراج بيانات التنقيح البرمجي لتسهيل فحص الأخطاء عبر أدوات التحليل.-D : تحديد ماكرو مسبق لمعالج ما قبل الترجمة أثناء البناء.-U : إلغاء تعريف ماكرو محدد مسبقاً في معالج ما قبل الترجمة.-I : إضافة مسار دليل مخصص للبحث عن ملفات الترويسة الإضافية.-L : تعيين مسار بحث إضافي لتحديد مواقع ملفات المكتبات البرمجية.-l : تحديد المكتبة الخارجية المستهدفة لربطها أثناء مرحلة الربط (Linking).

كتابة أول برنامج C89 وبناء التطبيق التنفيذي
لتجربة المترجم عملياً، ننشئ ملف الكود المصدري hello.c المصاغ وفق القواعد الصارمة لمعيار ANSI C.

نتأكد من اكتمال كتابة الشيفرة وحفظها بالشكل السليم باستخدام الأمر cat hello.c.

نُجري الآن عملية تجميع الكود المصدري hello.c بواسطة c89، مستخدمين الخيار -o لتسمية الناتج بالملف التنفيذي hello.

نقوم بتشغيل البرنامج المنبثق للتأكد من قيامه بالوظيفة المطلوبة وعرض المخرجات على الشاشة.

فصل مرحلتي التجميع والربط عبر الخيار (-c)
في بيئات التطوير الموسعة، تقتضي أفضل الممارسات ترجمة الملفات بشكل منفصل لتوفير وقت إعادة البناء. سننشئ الملف calc.c لتمثيل هذه الخطوة وفق مواصفة ANSI C.

نصدر أمر البناء متبوعاً بالراية -c لتحويل الكود إلى شيفرة آلة وتوليد الملف الهدفي calc.o فقط دون استدعاء مرحلة الربط النهائي.

نتحقق من وجود الملف الهدفي calc.o وخصائصه الأساسية داخل المجلد عبر الأمر ls -l calc.o.

بعد ذلك، نستعين بالأمر c89 مع الوسيط -o لتنفيذ الربط النهائي لملف calc.o واستخراج الملف التنفيذي calc.

نُشغل التطبيق التنفيذي calc للتحقق من سلامة ناتج المعالجة الرياضية المبرمجة.

تمرير وحدات الماكرو (-D) وربط مكتبة العمليات الرياضية (-lm)
لتطبيق توجيهات المعالجة القبلية والتعامل مع الدوال الحسابية المتقدمة، نكتب كود البرنامج app.c الذي يعتمد على مكتبة الحسابات الرياضية وشروط التنقيح البرمجي.

نمرر الوسيط -DDEBUG إلى أداة c89 لتفعيل الماكرو الشرطي وقت التجميع، مع إلحاق الراية -lm لربط مكتبة الرياضيات وتوليد التطبيق النهائي app.

نطلق البرنامج app للتحقق من طباعة سطور وضع التنقيح وحساب الجذر التربيعي بصورة دقيقة.

استعرض هذا الدليل العملي تقنيات استخدام أمر c89 لبناء برمجيات ANSI C داخل أوبونتو، وتطويع خيارات التجميع المتنوعة.
تعد هذه الخطوات ركيزة أساسية لضمان الامتثال التام للمعايير القديمة واستقرار عمليات البناء البرمجي في مختلف بيئات العمل المتقدمة.