سنعيد كتابة العلم بأبجدية عربية

  • الرئيسية
  • الفئات
  • الباحثون السوريون TV
  • من نحن
  • اتصل بنا
  • About Us
x
جارِ تحميل الفئات

البرمجة بلغة C++/C على نظام لينيكس

المعلوماتية >>>> برمجيات


تم حفظ حجم الخط المختار

يمكنك الاستماع للمقالة عوضاً عن القراءة

لعلَّ من أكثر الأمور إزعاجاً أثناءَ البرمجةِ أن تكونَ مضطراً لاستخدامِ بيئةٍ برمجيّةٍ لم تكن تعرفها، بواجهةٍ مربكةٍ وربّما مكلفةٍ أحياناً. هناكَ بديلٌ أقلُّ تعقيداً، سنتعرَّفُ كيف نترجمُ البرامجَ من خلالِ واجهةِ سطرِ الأوامرِ باستعمالِ أدوات (gcc) الخاصّةِ بنظامِ GNU/Linux.

تاريخٌ مختَصَرٌ عن نظام لينيكس:
ظهرت النّسخةُ الأولى لنظامِ لينيكس أواخرَ عامِ 1990 نتيجةَ اتّحادِ مشروعَين طُوِّرا سابقاً وبشكلٍ منفصلٍ؛ عُرِفَ المشروع الأوّلُ بـ (GNU) لِـ ريتشارد ستالمان من معهد MIT، الّذي بدأ عام 1984 والّذي كان يهدفُ إلى تطويرِ نظامِ تشغيلٍ مكتملٍ مشابهٍ لنظامِ يونيكس (Unix) يدعَمُ مبدأ البرمجةِ الحُرِّةِ أو مفتوحة المصدر.
إلّا أنّه وعلى الرّغم من احتوائِه على مجموعةٍ متكاملةٍ من البرامجِ (مكتبات، مترجمات، نظامُ إدارة الواجهةِ الرّسوميّة، نظامُ إعداد النّصوص TeX، برامج للمستخدم النهائيّ،..) فقد كان يفتقد إلى نواة تشغيلٍ، ثمّ ما هي إلّا بضعُ سنواتٍ حتّى قامَ لينوس تروفالدز من جامعةِ فنلندا بتطويرِ نواةٍ مشابهةٍ لليونيكس عام 1991 وجعلها تحت رخصةٍ حرةٍ عامَ 1992، وبهذا اكتملَ مشروعُ نظام لينيكس*.

أدوات (GCC):
من أجل كتابةِ البرامجِ على نظام GNU، كان لابدّ من مترجمٍ للغةِ C، لكن آنذاك لم تكن مترجمات لغة C مجانيّة، وهذا ما دفع مشروع GNU إلى تطوير مترجمٍ من الصّفر؛ هو مترجم (gcc).
و قد ظهرت ،GNU C/C++ Compiler اختصارٌ لـ GCC، النّسخة الأولى له عامَ 1987، وهذه كانت خطوةٌ تاريخيّةٌ في عالمِ البرمجةِ الحرّة فقد كان أوّل مترجمٍ حرٍّ، يستطيعُ المطوّرون استخدامَه لكتابةِ برامجِ النّظام.
ثمَّ سرعان ما توسّع ليدعمَ لغاتٍ أخرى منها: Fortran، Ada، Java، Objective-C، و ++C ...
وأصبح اختصاراً GCC يعني:
GNU Compiler Collection

مثال: تحويل وتنفيذ برنامج بسيطٍ مكتوبٍ بالـ C

# الخطوة الأولى:
تأكّد من وجود المترجم بكتابة الأمر:
which gcc


Image: www.syr-res.com

الّذي سيُظِهرُ مسارَ المترجمِ داخلَ ملفّاتِ النّظام.
ولمعرفةِ رقم الإصدار:
gcc --version


Image: www.syr-res.com

معظمُ توزيعاتِ لينيكس تحتوي مترجمَ gcc داخلِها وإذا كانت التّوزيعةُ الّتي لديك لا تحتوي المترجم، قم بتحميله وتنصيبه بكتابة الأمر:
sudo apt-get install build-essential
من خلال نافذة سطر الأوامر (cntrl + alt + T):


Image: www.syr-res.com

سيقوم هذا بتحميلِ حزم التّرجمةِ وتنصيبِها.
# الخطوة الثانيّة: كتابةُ شفرة البرنامج.
اكتب البرنامج التّالي باستخدام nano أو gedit أو أيِّ محررِ نصوصٍ تفضله وقم بحفظه تحت اسم hello.c


Image: www.syr-res.com

# الخطوة الأخيرة: ترجمة وتنفيذ البرنامج.
لترجمة البرنامج نفّذ الأمر: gcc hello.c -o hello-executable


Image: www.syr-res.com

يمثل gcc اسم المترجم، و-o يعني اسم الخرج hello-executable
الّذي سوف نقوم بتنفيذه بعد انتهاء التّرجمة بنجاحٍ.

لتنفيذ البرنامج، تقوم بتنفيذِ الأمر: ./hello-executable
النّتيجة:


Image: www.syr-res.com

فيما يخصُّ البرامجَ المكتوبةَ بلغة ++C، مثلاً لنكتبِ البرنامج التّالي:


Image: www.syr-res.com

تستبدل اسمَ المترجمِ في الخطوةِ السّابقةِ بـ ++g الّذي يمثل مترجمَ البرامجِ المكتوبةِ بـ ++C وتُغيّير امتدادَ الملفِ إلى cpp أو C.
والبقيّة كما في المثالِ السّابقِ.


Image: www.syr-res.com


Image: www.syr-res.com

وبهذا تعرّفنا على كيفيّة ترجمةِ وتنفيذِ البرامجِ المكتوبةِ بلغة C++/C على اللينيكس.

لننتقل إلى مثالٍ أكثرَ عمليّةً؛ لنفترض أنَّك ترغبُ في تجريب آخر نُسخةٍ من تطبيقكَ المفضّلِ وقد حمّلتَ شيفرتَه المصدريّةَ.
ربما تتساءلُ لماذا أحمِّلُ الشِّفرةَ المصدريّةَ وأنا لستُ مبرمجاً؟
حسناً، السببُ الرّئيسيّ يكمُنُ في تعدُّدِ وتنوُّعِ أنظمةِ التّشغيلِ والعتَادِ الهائلَينِ؛ وبذلك يكونُ على المبرمج مراعاةَ خصائصِ كلِّ علامةٍ أثناءَ كتابةِ البرنامج، لكنَّهُ بهذا يكونُ مُجبراً على توفيرِ نُسخٍ من نفسِ البرنامجِ على كلِّ المنصّاتِ وهو أمرٌ مكلِفٌ جداً وشبهُ مستحيلٍ، لذلك نجدُ التّطبيقاتِ الاحتكاريّةَ أوالتّجاريّةَ تُفضِّلُ أنظمةً دونَ غيرِها.
في عالمِ البرمجةِ مفتوحةِ المصدرِ**، يُوّفرُ المبرمجونَ والشّركاتُ الحرّة** على حدٍّ سواء الشّفراتِ المصدريّةِ لبرامجهم.
من ناحيةٍ أخرى وانطلاقاً أيضاً من مبدأ البرمجةِ مفتوحةِ المصدرِ الّذي تدعمه توزيعات لينيكس، يتشارك المطوّرون فيما بينَهم الشّفراتِ المصدريّةِ والتّعديلاتِ الّتي يجرونها على هذه البرامج، كنوعٍ من تبادلِ المعارفِ.

الآن لنفترض أنّك تريدُ تجريبَ آخرِ نسخةٍ من تطبيقِكَ المُفضّلِ، ولا تملك سوى الشّفرة المصدريّة. في هذه الخطوة لا تحتاج فعلاً لأن تكونَ مبرمجاً محترفاً، فقط بِضعُ أوامرَ على نافذة سطرِ الأوامرِ ويكون البرنامج صالحاً للاستخدام.

لنحمِّل الشّفرة المصدريّة لبرنامج المحادثة Pidgin
# أولاً: حمِّل آخرَ إصدارٍ للملفِّ من الموقع الرّسميّ:
هنا


Image: www.syr-res.com

# ثانياً: فكّ ضغطَ الملفِّ باستعمال الأمر:
tar -jxvf pidgin*


Image: www.syr-res.com

الامتداد tar.bz2 هو المكافئ لامتداد zip على الويندوز.
# ثالثاً: ادخل المجلد النّاتج عن العمليّة السّابقة وقم بتنفيذ الملفِّ 'configure' بكتابة الأمر:
./configure


Image: www.syr-res.com

- يقوم هذا الأمر بالبحث عن الملفّات الضّروريّة لترجمة ملفّات البرنامج.
- العلامة /. تُعلِمُ مفسّرَ سطرِ الأوامرِ بالبحث في المجلد الحاليّ.
- قد يكون من المفيدِ أن تقرأ ملفَّ ReadMe في حالِ كانت هناكَ تعليماتٌ خاصةٌ.
- في نهاية العمليّة، يُحتمل أن تقرأ رسالةً تُعلِمُكَ بنقص أحدِ الملفّات، قم بتحميلها بتنفيذ الأمر: sudo apt-get install [script-name]
واستبدل script-name بـ اسم الملفِّ النِّاقص.


Image: www.syr-res.com

(مثلاً عند تنفيذِ الأمر configure/. يظهرُ أنّ الملفَّ intltool ناقصٌ، فتقوم بتحميلِه بكتابةِ الأمر: sudo apt-get install intltool

#أخيراً: ترجمة وتنفيذ البرنامج.
بعد انتهاء الخطوة السّابقة، يترجَمُ البرنامجُ بكتابةِ الأمر: sudo make
تختلف مدةُ هذه العمليّةِ بحسب النّظام وحجمِ البرنامج.

عند انتهاءِ العمليّةِ السَّابقةِ، تنفذ البرنامجَ بكتابةِ الأمر: sudo make install
وبهذا تنتهي ترجمةُ البرنامج، الآن يمكنك فتحه بكتابة اسمه Pidgin على سطر الأوامر.

هامش:
* انتشرت تسميةُ لينيكس بدل غنو/لينيكس، وهذا خطأ فهو يتألّف من نظام غنو (الّذي يمثّل مجموعةَ التّطبيقاتِ المكوِنّةِ للنّظام) المطوّرة ضمن مشروع غنو لـ ريتشارد ستالمان، ونواة لينيكس المطوّرة من قبل لينوس تروفالدز (الوحدة البرمجيّة الّتي تعمل كواجهةٍ بين برامج النّظام والعتاد).
** في هذا المقال اعتمدنا مصطلحَي' البرمجة الحرّة' و'مفتوحةُ المصدر' للتّعبير عن نفس الشّيء لغرض التّبسيط، لكنّهما في الحقيقة يختلفان. لمعرفة الفرق بين البرمجة الحرّة ومفتوحة المصدر هنا

المراجع:
[1] هنا
[2] An Introduction to GCC -- Brian Cough (p. 3)
[3] Using the GNU Compiler Collection -- Richard Stallman et al.
[4] C programming in LInux -- David Haskins
[5] هنا
[6] هنا

مواضيع مرتبطة إضافية

المزيد >


شارك

تفاصيل

07-02-2017
3775
البوست

المساهمون في الإعداد

إعداد: Zaynab AlHamer
تدقيق علمي: Yamen Imad Nassif
تدقيق لغوي: Maissaa Markabi
تصميم الصورة: Kinan Alsakka
صوت: Ghandi Safar Saado
نشر: Hashem Azzam

تابعنا على يوتيوب


من أعد المقال؟

Zaynab AlHamer
Yamen Imad Nassif
Maissaa Markabi
Kinan Alsakka
Ghandi Safar Saado
Hashem Azzam

مواضيع مرتبطة

ما هي أنظمة تشغيل الزمن الحقيقي؟

تقنيّة فيسبوك للبحث داخلَ محتوياتِ الصّور

تكنولوجيا التّخاطر والتّخاطب عن بعد

نظام حاسوبي يتعلم لغة من خلال لعبة!

"laravel" الإطار البرمجبي لمصمّمي الويب

التصفّح المحمي (التصفّح الخاص)

5 أنظمة تشغيل بأفكار مبتكرة

15 سلسلة من الدورس التعليمية المجانية تساعدك لكي تصبح مطور تطبيقات الأندرويد

عندما ترغب بشراء جهاز جديد , عليك أن تختار هل تريده Intel Core i3,i5 أم i7 فما الفرق بينها ؟ و أيها أفضل ؟

خوارزميةٌ جديدةٌ تَضمنُ عشوائيّةَ الأرقام المولَّدة

شركاؤنا

روابط مهمة

  • الشركاء التعليميون
  • حقوق الملكية
  • أسئلة مكررة
  • ميثاق الشرف
  • سياسة الكوكيز
  • شركاؤنا
  • دليل الشراكة
جميع الحقوق محفوظة لمبادرة "الباحثون السوريون" - 2023