قائمة طعام
مجانا
تسجيل
بيت  /  بواسطة/ البرمجة بلغة C (C) في أوبونتو (Linux). مقدمة

البرمجة بلغة C (C) في أوبونتو (Linux). مقدمة

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

هذه مقالة عامة حول برمجة Linux. سننظر في اللغات الأكثر استخدامًا ، وننظر في المفاهيم الأساسية ، بالإضافة إلى الاحتمالات ، وسنحلل كيفية الكتابة أبسط برنامجبإحدى لغات البرمجة الأكثر شيوعًا ، كيفية إنشائها وتشغيلها يدويًا.

تاريخيا ، نواة Unix كانت مكتوبة بلغة C. أكثر من ذلك ، تم إنشاء هذه اللغة لكتابة نواة Unix. نظرًا لأن نواة Linux كانت مبنية على نواة Minix (نسخة من Unix) ، فقد تمت كتابتها أيضًا بلغة C. لذلك ، يمكننا القول أن لغة البرمجة الرئيسية لنظام Linux هي C و C ++. استمر هذا الاتجاه لفترة طويلة.

بشكل عام ، يمكنك كتابة برامج لنظام Linux بأي لغة تقريبًا ، من Java و Python إلى C # وحتى Pascal. تحتوي جميع اللغات على مترجمين ومترجمين فوريين. تعد كتابة البرامج في C ++ أمرًا صعبًا ، وتعتبر C بالفعل قديمة من قبل الكثيرين ، لذلك يستخدم العديد من المبرمجين لغات أخرى لكتابة البرامج. على سبيل المثال ، تتم كتابة العديد من أدوات النظام بلغة Python أو Perl. معظم البرامج من أوامر لينكستمت كتابة Mint ومثبت Ubuntu وبعض البرامج النصية الملائمة بلغة Python. تتم كتابة العديد من البرامج النصية ، بما في ذلك نصوص التحسين البسيطة ، بلغة Perl. أحيانًا يتم استخدام روبي في البرمجة النصية. هذه هي نصوص OpenShift أو ، على سبيل المثال ، إطار عمل Metasploit. بعض مطوري الأنظمة الأساسية يستخدمون Java. لكن المكونات الرئيسية للنظام لا تزال مكتوبة بلغة C.

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

لماذا نتعلم C:

2. المكتبات

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

تنقسم المكتبات إلى نوعين:

  • ثابتة- يتم ربطهم بالبرنامج في مرحلة التجميع ، ويتم ربطهم وبعد ذلك تتوفر جميع وظائف المكتبة في البرنامج كوظائف أصلية. هذه المكتبات لها الامتداد .a ؛
  • متحرك- هذه المكتبات أكثر شيوعًا ، ويتم تحميلها في ذاكرة الوصول العشوائي ، وهي مرتبطة ديناميكيًا بالبرنامج. عندما يحتاج البرنامج إلى مكتبة ، فإنه يستدعيها ببساطة على عنوان معروف في ذاكرة الوصول العشوائي. هذا يحفظ الذاكرة. امتداد هذه المكتبات هو. وهو مشابه للكائن المشترك.

وبالتالي ، بالنسبة لأي برنامج من برامج لغة سي ، فأنت بحاجة إلى تضمين مكتبات ، وجميع البرامج تستخدم نوعًا ما من المكتبات. من المهم أيضًا ملاحظة أنه بغض النظر عن اللغة التي تقرر الكتابة بها ، فسيتم في النهاية تحويل كل شيء إلى مكتبات نظام C. على سبيل المثال ، تكتب برنامجًا بلغة Python ، وتستخدم الميزات القياسية لهذه اللغة ، والمترجم الفوري هو بالفعل برنامج C / C ++ يستخدم مكتبات النظام للوصول إلى الميزات الرئيسية. لذلك ، من المهم فهم كيفية عمل برامج لغة سي. بالطبع ، هناك لغات مثل Go يتم ترجمتها على الفور إلى مُجمِّع ، لكن المبادئ هي نفسها الموجودة هنا. بالإضافة إلى ذلك ، تكون برمجة نظام Linux في الغالب C أو C ++.

3. عملية تجميع البرنامج

قبل أن ننتقل إلى ممارسة وإنشاء برنامجنا الأول ، نحتاج إلى فهم كيفية حدوث عملية التجميع والمراحل التي تتكون منها.

يتكون كل برنامج جاد من العديد من الملفات ، هذه ملفات مصدر بامتداد .c وملفات رأس بامتداد .h. تحتوي ملفات الرأس هذه على وظائف يتم استيرادها إلى البرنامج من مكتبات أو ملفات أخرى. قبل. كيف يمكن للمترجم ترجمة البرنامج وإعداده للعمل ، فهو يحتاج إلى التحقق مما إذا كانت جميع الوظائف قد تم تنفيذها بالفعل ، وما إذا كانت جميع المكتبات الثابتة متاحة وتجميعها في ملف واحد. لذلك ، يتم تنفيذ المعالج المسبق أولاً ، والذي يبني الملف المصدر ، ويتم تنفيذ عبارات مثل include لتضمين رمز ملفات الرأس.

في المرحلة التالية ، يبدأ المترجم في العمل ، ويقوم بتنفيذ جميع الإجراءات اللازمة على الكود ، ويحلل التركيبات النحوية للغة ، والمتغيرات ويحول كل هذا إلى رمز وسيط ، ثم إلى رمز تعليمات الآلة ، وهو ما يمكننا القيام به ثم ننظر في لغة التجميع. يُطلق على البرنامج في هذه المرحلة اسم وحدة الكائن وهو ليس جاهزًا للتشغيل بعد.

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

والآن ، دعنا نرى العملية برمتها عمليًا باستخدام مترجم GCC.

4. كيفية بناء البرنامج

هناك نوعان من المجمعات المستخدمة لإنشاء برامج في Linux ، وهما. حتى الآن ، تعتبر دول مجلس التعاون الخليجي أكثر شيوعًا ، لذلك سننظر فيها. عادةً ما يكون البرنامج مثبتًا بالفعل على نظامك ، إذا لم يكن كذلك ، يمكنك تشغيله للتثبيت في Ubuntu:

sudo apt install gcc

قبل أن ننتقل إلى كتابة البرنامج وتجميعه ، دعنا نلقي نظرة على خيارات بناء الجملة والمترجم:

خيارات دول مجلس التعاون الخليجي source_file_1.c -o finish_file

بمساعدة الخيارات ، نقول للأداة المساعدة ما يجب فعله ، والمكتبات التي يجب استخدامها ، ثم نقوم ببساطة بتحديد الملفات المصدر للبرنامج. لنلقِ نظرة على الخيارات التي سنستخدمها اليوم:

  • -o- كتابة النتيجة إلى ملف للإخراج ؛
  • - إنشاء ملف كائن ؛
  • -x- تحديد نوع الملف ؛
  • - تحميل مكتبة ثابتة.

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

يشمل
#يشمل

انت مين()(
printf ("موقع \ n") ؛
printf ("الجذر:٪ f \ n" ، sqrt (9)) ؛
العودة 0 ؛
}

مجلس التعاون الخليجي -c program.c -o program.o

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

برنامج دول مجلس التعاون الخليجي -lm.o -o

انتبه إلى الخيار -l ، حيث نحدد المكتبات التي يجب تضمينها ، على سبيل المثال ، نقوم هنا بتضمين مكتبة الوظائف الرياضية ، وإلا فلن يجد الرابط ببساطة مكان هذه الوظيفة أو تلك. بعد ذلك فقط يمكنك تشغيل البرنامج للتنفيذ:

بالطبع ، يمكن تنفيذ كل هذه الإجراءات باستخدام بيئات رسومية مختلفة ، ولكن من خلال القيام بكل شيء يدويًا ، يمكنك فهم كيفية عمل كل شيء بشكل أفضل. بمساعدة الأمر ldd ، يمكنك معرفة المكتبات التي يستخدمها برنامجنا:

هذان هما مكتبتا اللودر ، libc القياسي و libm ، اللذان قمنا بتضمينهما.

5. أتمتة التجميع

عندما نفكر في البرمجة في نظام Linux ، من المستحيل عدم ملاحظة نظام أتمتة تجميع البرامج. الحقيقة هي أنه عندما يكون هناك الكثير من ملفات مصدر البرنامج ، فلن تقوم بإدخال الأوامر يدويًا لتجميعها. يمكنك تسجيلها مرة واحدة ثم استخدامها في كل مكان. هناك فائدة و Makefiles لهذا الغرض. يتكون هذا الملف من أهداف وله البنية التالية:

الهدف: التبعيات
فريق

يمكن أن تكون تبعية الهدف ملفًا أو هدفًا آخر ، والهدف الرئيسي هو كل شيء ، ويقوم الأمر بتنفيذ إجراءات البناء اللازمة. على سبيل المثال ، بالنسبة لبرنامجنا ، قد يبدو ملف Makefile كما يلي:

البرنامج: program.o
برنامج دول مجلس التعاون الخليجي -lm.o -o

program.o: program.c
مجلس التعاون الخليجي -c program.c -o program.o

ثم تحتاج فقط إلى تشغيل الأمر make لبدء التجميع ، فقط تذكر إزالة الملفات المؤقتة السابقة والبرنامج المبني:

البرنامج جاهز مرة أخرى ويمكنك تشغيله.

الاستنتاجات

خلق برامج لينكسمثيرة للاهتمام ومثيرة للغاية. سترى هذا بنفسك عندما تتعرف قليلاً على هذا الأمر. من الصعب تغطية كل شيء في مثل هذا المقال القصير ، لكننا غطينا الأساسيات ويجب أن توفر لك قاعدة. في هذه المقالة ، قمنا بتغطية أساسيات البرمجة في نظام Linux ، إذا كان لديك أي أسئلة ، فاسأل في التعليقات!

دورة البرمجة C لنظام Linux:

الأدوات المستخدمة تقليديًا لكتابة البرامج لأنظمة التشغيل المفتوحة هي أدوات مطور جنو. دعونا نفعل القليل من الخلفية التاريخية. تأسس مشروع جنو عام 1984 على يد ريتشارد ستالمان. كانت ضرورتها بسبب حقيقة أن التعاون بين المبرمجين في ذلك الوقت كان صعبًا ، منذ أصحاب الإعلانات التجارية برمجةخلق العديد من العقبات لمثل هذا التعاون. كان الهدف من مشروع جنو إنشاء مجموعة من البرامج بموجب ترخيص واحد لا يسمح لأي شخص بتعيين الحقوق الحصرية لهذا البرنامج. جزء من هذه المجموعة هو مجموعة أدوات المطور التي سنستخدمها ، والتي يجب تضمينها مع جميع توزيعات Linux.

أحد هذه الأدوات هو مترجم GCC. هذا الاسم المختصر كان في الأصل لـ GNU C Compiler. هذا يعني الآن - مجموعة مترجم جنو.

لنقم بإنشاء أول برنامج باستخدام GCC. حسب التقليد ، سيقوم البرنامج الأول ببساطة بطباعة التحية "Hello world!" - "مرحبا بالعالم!".

ملفات التعليمات البرمجية المصدر للبرامج التي سننشئها هي ملفات نصية عادية ويمكن إنشاؤها باستخدام أي محرر نصوص (مثل GEdit KWrite و Kate ومستخدمي Linux الأكثر تقليدية vi و emacs). بالإضافة إلى برامج تحرير النصوص ، هناك بيئات تطوير متخصصة بها برامج تحرير مدمجة خاصة بها. إحدى هذه الأدوات هي KDevelop. ومن المثير للاهتمام ، أنه يحتوي على محرر مدمج ووحدة تحكم مدمجة تقع أسفل المحرر مباشرة. لذلك يمكنك مباشرة في برنامج واحد ، دون التبديل بين النوافذ ، وتحرير الكود وإعطاء أوامر وحدة التحكم.

قم بإنشاء دليل ترحيب منفصل. سيكون هذا أول دليل مشروع لدينا. في ذلك خلق ملف نصي hello.c بالنص التالي:

#يشمل

printf ("Hello world! \ n")؛

ثم في وحدة التحكم ، انتقل إلى دليل المشروع. اطلب فريقًا

الآن انظر عن كثب إلى ما حدث. ظهر ملف a.out جديد في الدليل. هذا هو الملف القابل للتنفيذ. دعونا نطلقها. اكتب في وحدة التحكم:

يجب أن يبدأ البرنامج ، أي يجب أن يظهر النص:

يقوم برنامج التحويل البرمجي لدول مجلس التعاون الخليجي بتعيين الاسم a.out لجميع الملفات التنفيذية التي تم إنشاؤها افتراضيًا. إذا كنت تريد تسميته بشكل مختلف ، فأنت بحاجة إلى إضافة العلامة -o والاسم الذي تريد تسميته إلى أمر الترجمة. لنكتب الأمر التالي:

دول مجلس التعاون الخليجي hello.c -o hello

نرى أن ملفًا قابلاً للتنفيذ يسمى hello قد ظهر في الدليل. دعونا نطلقها.

كما ترى ، النتيجة هي نفس الملف القابل للتنفيذ ، فقط باسم مناسب لنا.

العلامة -o هي واحدة من العديد من أعلام المترجمين في دول مجلس التعاون الخليجي. سيتم مناقشة بعض الأعلام الأخرى لاحقًا. يمكنك استخدام نظام man help لرؤية جميع العلامات الممكنة. اكتب في سطر الأوامر:

سيتم تقديمك مع نظام مساعدة لهذا البرنامج. راجع ما تعنيه كل علامة. سنلتقي ببعض منهم قريبا. تم الخروج من نظام التعليمات باستخدام مفتاح q.

بالطبع ، لاحظت أنه عندما نقوم بتشغيل برنامج من دليل التطوير الخاص بنا ، فإننا نكتب نقطة وشرطة مائلة قبل اسم الملف. لماذا نفعل ذلك؟

الحقيقة هي أننا إذا كتبنا الاسم فقط ملف تنفيذي، سيبحث عنه نظام التشغيل في الدلائل / usr / bin و / usr / local / bin ، وبالطبع لن يعثر عليه. الدلائل / usr / bin و / usr / local / bin هي دلائل موقع النظام البرامج القابلة للتنفيذ. تم تصميم أولهما لاستضافة إصدارات مستقرة من البرامج ، وعادة ما يتم تضمينها في توزيع لينكس. والثاني للبرامج التي يقوم المستخدم بتثبيتها بنفسه (والتي لا يضمن أحد استقرارها). هناك حاجة إلى مثل هذا النظام لفصلهم عن بعضهم البعض. بشكل افتراضي ، يتم تثبيت البرامج على الدليل / usr / local / bin عند إنشائها. من غير المرغوب فيه وضع أي شيء إضافي في / usr / bin أو حذف أي شيء من هناك يدويًا ، لأن هذا قد يؤدي إلى تعطل النظام. يجب أن تكون هناك برامج ، يكون مطورو التوزيع مسؤولين عنها.

لتشغيل برنامج موجود في مكان آخر ، يجب عليك تحديد المسار الكامل إليه ، على النحو التالي:

/ home / dima / projects / hello / hello

أو خيارًا آخر: اكتب المسار المتعلق بالدليل الحالي الذي أنت فيه حاليًا في وحدة التحكم. في هذه الحالة ، تعني نقطة واحدة الدليل الحالي ، نقطتان - الأصل. على سبيل المثال ، يقوم الأمر. الدليل الحالي.

من الممكن إضافة أدلة إضافية إلى قائمة مسارات النظام للبرامج. للقيام بذلك ، قم بإضافة مسار جديد إلى متغير نظام PATH. لكن دعونا لا نستغني عن الموضوع الرئيسي في الوقت الحالي. متغيرات البيئةمحادثة منفصلة.

لنلق نظرة الآن على ما يفعله برنامج دول مجلس التعاون الخليجي. يتضمن عملها ثلاث مراحل: المعالجة المسبقة والتجميع والربط (أو الربط).

يتضمن المعالج المسبق محتويات جميع ملفات الرأس المحددة في التوجيهات #include في الملف الرئيسي. تحتوي ملفات الرأس عادةً على إعلانات عن الوظائف المستخدمة في البرنامج ، ولكن لم يتم تعريفها في نص البرنامج. توجد تعريفاتهم في مكان آخر: إما في ملفات مصدر أخرى أو في مكتبات ثنائية.

المرحلة الثانية هي التجميع. يتمثل في تحويل نص البرنامج بلغة C / C ++ إلى مجموعة من إرشادات الجهاز. يتم تخزين النتيجة في ملف كائن. بالطبع ، على الأجهزة ذات بنى المعالج المختلفة ، يتم الحصول على الثنائيات بتنسيقات مختلفة ، ومن المستحيل على جهاز واحد تشغيل ثنائي مبني على جهاز آخر (ما لم يكن لديهم نفس بنية المعالج ونفس أنظمة التشغيل). لهذا السبب يتم توزيع برامج الأنظمة المشابهة لـ UNIX كرموز مصدر: يجب أن تكون متاحة لجميع المستخدمين ، بغض النظر عمن لديه أي معالج وأي نظام تشغيل.

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

الآن دعونا نرى كيف يبدو الأمر كله عمليًا. لنكتب برنامج آخر. ستكون الآلة الحاسبة الأكثر بدائية القادرة على الجمع والطرح والضرب والقسمة. عند إطلاقه ، سيطلب منك رقمين لتشغيلهما ، ثم يطلب منك إدخال علامة العملية الحسابية. يمكن أن تتكون من أربعة أحرف: "+" ، "-" ، "*" ، "/". بعد ذلك ، يعرض البرنامج النتيجة ويتوقف (يعود بنا إلى نظام التشغيل، أو بالأحرى مترجم الأوامر ، الذي أطلقنا منه اسم البرنامج).

لنقم بإنشاء المشروع ملف جديد kalkul ، سننشئ ملف kalkul.c فيه.

#يشمل

printf ("الرقم الأول:") ؛

scanf ("٪ f"، & num1) ؛

printf ("الرقم الثاني:") ؛

scanf ("٪ f"، & num2) ؛

printf ("عامل التشغيل (+ - * /):") ؛

بينما ((المرجع = getchar ())! = EOF)

printf ("٪ 6.2f \ n" ، num1 + num2) ؛

وإلا إذا (المرجع == "-")

printf ("٪ 6.2f \ n" ، num1 - num2) ؛

وإلا إذا (المرجع == "*")

printf ("٪ 6.2f \ n" ، num1 * num2) ؛

وإلا إذا (op == "/")

printf ("خطأ: قسمة على صفر! \ n")؛

استراحة؛

printf ("٪ 6.2f \ n" ، num1 / num2) ؛

لذلك ، أولاً وقبل كل شيء ، كما قيل ، يتم تنفيذ المعالجة المسبقة. من أجل معرفة ما يتم القيام به في هذه المرحلة ، سنستخدم الخيار -E. يوقف هذا الخيار تنفيذ البرنامج في مرحلة المعالجة بواسطة المعالج المسبق. والنتيجة هي ملف مصدر الرمزمع محتويات ملفات الرأس المضمنة فيه.

في حالتنا ، قمنا بتضمين ملف رأس واحد - stdio.h - مجموعة الميزات القياسيةالمدخلات والمخرجات. تقوم هذه الوظائف بإخراج النص المطلوب إلى وحدة التحكم ، وكذلك قراءة الكلمات التي ندخلها من وحدة التحكم.

أدخل الأمر التالي:

دول مجلس التعاون الخليجي -E kalkul.c -o kalkul.cpp

قمنا بتسمية الملف الناتج kalkul.cpp. افتحه. يرجى ملاحظة أنه طويل جدًا. هذا بسبب تضمينه جميع التعليمات البرمجية في ملف الرأس stdio.h. بالإضافة إلى ذلك ، أضاف المعالج المسبق هنا بعض العلامات التي تخبر المترجم كيفية التواصل مع الوظائف المعلنة. النص الرئيسي لبرنامجنا مرئي فقط في الأسفل.

يمكنك أيضًا معرفة الوظائف الأخرى التي تم الإعلان عنها في ملف الرأس stdio.h. إذا كنت تريد معلومات حول وظيفة معينة ، فيمكنك أن تسأل عنها في الرجل المدمج. على سبيل المثال ، إذا كنت تريد فجأة معرفة وظيفة الوظيفة الغامضة fopen ، فيمكنك كتابة:

هناك أيضًا الكثير من المعلومات في معلومات نظام المساعدة.

يمكنك أن تسأل الجميع الملف الاساسيحالا.

دعنا الآن نلقي نظرة على الخطوة التالية. لنقم بإنشاء ملف كائن. ملف الكائن هو ترجمة "حرفية" لرمز برنامجنا إلى لغة الآلة ، ولكن بدون ربط الوظائف المسماة بتعريفاتها. يستخدم الخيار -c لإنشاء ملف كائن.

يمكن حذف اسم الملف الناتج ، لأن المترجم يأخذ ببساطة اسم الملف المصدر ويغير الامتداد .c إلى .o (يمكنك تحديد ما إذا كنا نريد تسميته بشكل مختلف).

إذا كنا بصدد إنشاء ملف كائن من مصدر تمت معالجته بالفعل بواسطة المعالج المسبق (مثل الذي حصلنا عليه أعلاه) ، فيجب أن نشير صراحة إلى أن الملف الذي يتم تجميعه هو ملف شفرة مصدر تمت معالجته بواسطة المعالج المسبق ولديه علامات المعالج المسبق. وإلا ستتم معالجته على أنه ملف عادي C ++ ، دون مراعاة علامات المعالج المسبق ، مما يعني أنه لن يتم إنشاء العلاقة مع الوظائف المعلنة. يتم استخدام الخيار -x للإشارة صراحة إلى لغة وتنسيق الملف قيد المعالجة. يتم الإشارة إلى ملف C ++ الذي تمت معالجته بواسطة المعالج المسبق بواسطة cpp-output.

دول مجلس التعاون الخليجي -x cpp-output -c kalkul.cpp

أخيرًا ، الخطوة الأخيرة هي التخطيط. نحصل على الملف القابل للتنفيذ من ملف الكائن.

دول مجلس التعاون الخليجي kalkul.o -o kalkul

يمكنك تشغيله.

تسأل: لماذا كل هذا العناء مع المراحل المتوسطة؟ ألن يكون من الأفضل تشغيل kalkul.c -o kalkul مجلس التعاون الخليجي مرة واحدة فقط؟ "

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

ديمتري بانتيليشيف (dimanix2006 at rambler dot ru) - مقدمة لمجمع دول مجلس التعاون الخليجي

اسم: برمجة C ++ على Linux.

كتاب "البرمجة في C ++ على Linux" مخصص لتطوير تطبيقات C ++ في بيئة تطوير KDEvelop. مؤلف الكتاب يعطي وصف مفصلتفاعلات مكونات التطبيق ، ويغطي أساسيات العمل باستخدام الأداة المساعدة Qt Designer ، ويناقش عناصر التحكم في مربعات الحوار والفئات التي تم إنشاؤها من أجلها. يعلم الكتاب مفهوم المستند / العرض ، وإنشاء عناصر واجهة التطبيق. يتم أيضًا تناول موضوعات مثل حفظ واستعادة المعلومات المختلفة المعروضة على الشاشة ، وتطوير برامج تحرير النصوص ، وتنظيم تعدد المهام في التطبيقات بناءً على العمليات التفاعلية ، والعمل مع قوالب الفصول والوظائف. في الختام ، يعطي المؤلف نصيحة مفيدةلإنشاء نظام مساعدة للتطبيق المطور. الكتاب مخصص للمبرمجين المحترفين.


الكتاب مخصص لإنشاء تطبيقات مكتوبة بلغة C ++ في بيئة تطوير KDevelop. ويرد وصف طرق التفاعل بين مكونات التطبيق. يتم أخذ العمل باستخدام الأداة المساعدة Qt Designer في الاعتبار ويتم وصف عناصر التحكم الرئيسية المستخدمة في مربعات الحوار ، بالإضافة إلى الفئات التي تم إنشاؤها للعمل معها. يتم تعريف القارئ بمفهوم المستند / العرض ويتعلم كيفية إنشاء عناصر واجهة مستخدم التطبيق. بالإضافة إلى ذلك ، تتناول الفصول المنفصلة قضايا عرض المعلومات المختلفة على الشاشة ، وحفظها واستعادتها من ملف ، وإنشاء محررات نصية ، والعمل باستخدام قوالب الفصل والوظائف ، وتنظيم تعدد المهام في تطبيق ما بناءً على العمليات التفاعلية. وتختتم بإرشادات لإنشاء نظام تعليمات التطبيق.

محتوى:
مقدمة
لمن هذا الكتاب؟
هيكل الكتاب
الاصطلاحات المستخدمة في هذا الكتاب
متطلبات الأجهزة والبرامج
الفصل 1 تفاعل مكونات التطبيق
الإشارات والمستقبلات
إرسال الإشارات
تنفيذ جهاز الاستقبال
تنفيذ الاتصال
التعامل مع الحدث
العمل مع النافذة
العمل مع التركيز على المدخلات
تشغيل الماوس
تشغيل لوحة المفاتيح
سحب وإسقاط التنفيذ
مرشحات الأحداث
الأحداث الاصطناعية
تسلسل معالجة الحدث
خاتمة
الفصل 2 مربعات الحوار والضوابط الأساسية
خلق تطبيق الحوار
قم بإنشاء كعب تطبيق
إنشاء مربع حوار إعداد مسبق
إكمال تطبيق الحوار
إنشاء مربعات حوار مخصصة
إنشاء مربع حوار مبوب
إنشاء معالج
الفصل 3 فئات التحكم
فئة القائمة
منظم خطي ومؤشر خطي
العمل مع التاريخ والوقت
الفصل 4 فئات التطبيق والوثيقة والعرض
كيو تي تطبيق متعدد النوافذ
فئة الوثيقة
مشاهدة الفصل
فئة التطبيق
تطبيق كيدي متعدد النوافذ
فئة الوثيقة
مشاهدة الفصل
فئة التطبيق
الفصل 5 إنشاء عناصر واجهة المستخدم
واجهة المستخدممكتبات Qt
إجراء تغييرات على القائمة
العمل مع شريط الحالة
واجهة مستخدم تطبيق كيدي
إجراء تغييرات على القائمة
تخصيص شريط الأدوات
العمل مع شريط الحالة
الفصل 6 عرض المعلومات على الشاشة
رسم شخصية
العمل بفرشاة
إعادة رسم النافذة
مزامنة عرض الكائنات
إخراج النص
العمل مع الصور النقطية
الصور النقطية المعتمدة على الخوارزمية
صور نقطية مستقلة عن الجهاز
الفصل 1 العمل مع ملفات المستندات
حفظ واستعادة المعلومات في التطبيق
تخصيص مربعات الحوار
إجراء تغييرات على القائمة
ضبط دليل العمل
الفصل 8 العمل مع مستندات نصية
بناء محرر نص بسيط
بناء محرر أكثر تعقيدًا
إنشاء محرر كيدي
الفصل 9 قوالب المجموعة والفئات
القوالب
مفهوم النموذج
قوالب الوظائف
قوالب الفصل
فصول التحصيل
أنواع فئات المجموعة
المصفوفات
القوائم المرتبطة
عرض الخرائط
فئات التحصيل الأخرى
الفصل 10 تنفيذ تعدد المهام في التطبيق
تفاعل العملية
إنشاء عميل لخادم بسيط
بناء خادم أكثر تعقيدًا
قم بإنشاء عميل
بعض الملاحظات
الفصل 11 تعليمات التطبيق
نماذج عرض المعلومات المرجعية
كيفية الوصول إلى نظام المساعدة
طرق تقديم المعلومات الأساسية
أشكال عرض المعلومات
برمجة مساعدة السياق
إخراج تلميح
عرض معلومات المساعدة في شريط الحالة
الحصول على معلومات عن عنصر معين
واجهة المستخدم
برمجة قيادة المساعدة
تنسيق ملف تعليمات الأوامر لتطبيقات Qt
إنشاء تطبيق Qt Demo
الملحق 1 ما هو موجود على القرص المضغوط
الملحق 2 موارد الإنترنت
دليل الموضوع


تنزيل مجاني الكتاب الاليكترونيبتنسيق مناسب ، شاهد واقرأ:
قم بتنزيل كتاب C ++ Programming in Linux - Nikolay Sekunov - fileskachat.com ، تنزيل سريع ومجاني.

تحميل PDF
يمكنك شراء هذا الكتاب أدناه افضل سعربسعر مخفض مع التسليم في جميع أنحاء روسيا.

أصبح من الواضح أن الموضوع وثيق الصلة بالموضوع. تم أخذ بعض الأخطاء والأسئلة في الاعتبار ، ونتيجة لذلك ، تقرر عقد فصل دراسي ثانٍ. تمت الإضافة والتصحيح!

البرمجة على مستوى الماجستير في C تحت Linux. ندرس واجهة برمجة التطبيقات الرئيسية.

هذا البرنامج التعليمي مخصص للأشخاص الذين يرغبون في تعلم واجهة برمجة التطبيقات * لا شىء مثل OS ، ولا سيما في نظام Linux. هنا سننظر في ميزات التطوير في ظل نظام التشغيل Linux ، والتي تشمل:


  • الإلمام بعملية بناء البرمجيات وخصوصيات مترجم لغة سي من دول مجلس التعاون الخليجي

  • تطوير واستخدام المكتبات المشتركة

  • برامج التصحيح

  • استكشاف آليات إدخال / إخراج الملفات ذات المستوى المنخفض

  • دراسة آليات ضمان تعدد المهام والتواصل بين العمليات

  • استخدام مآخذ توصيل الملفات والشبكات

  • دراسة آلية الإشارات وتطبيقها

  • دراسة العمليات والخيوط واختلافها واستخدام تعدد الخيوط ودراسة آليات تزامن الخيوط ومشاكلها

  • خلق الشياطين وتعلم الفرق بين الشياطين والبرامج التطبيقية

  • استكشاف ميزات I / O لوحدة التحكم

  • ملفات الذاكرة المعينة وكيفية استخدامها

هذه الفئة الرئيسية مخصصة بشكل أساسي لمطوري البرامج والمهندسين والمبرمجين والهواة فقط المهتمين بالجهاز وخصائص نظام التشغيل Linux.

متطلبات المشاركين في الفصل الرئيسي: معرفة لغة C على مستوى الكتاب ب. كيرنيغان ، د. ريتشي "لغة سي".

ستكون تكلفة هذه الفئة الرئيسية 6000 روبل.

المكان هو مدينة موسكو ، في مقر Hackspace Neuron.
التواريخ: من 4 يوليو (الاثنين) إلى 7 يوليو (الخميس) من الساعة 10 صباحًا حتى الساعة 5 مساءً مع استراحة غداء واستراحة لتناول الشاي / القهوة.

لم يتم التخطيط للبث عبر الإنترنت.
عدد الأفراد في المجموعة: 8-10.

يتم التسجيل في بريد إلكتروني [بريد إلكتروني محمي]أو التعليق على هذه الوظيفة. مطلوب اسمك الكامل للتسجيل. (بالكامل) وتفاصيل الاتصال (رقم الهاتف والبريد). من المستحسن وصف الغرض من حضور هذه الفئة الرئيسية ، ومستوى التدريب والمهنة.

برنامج الدورة التفصيلية:

الوحدة 1: مقدمة


  • الإلمام بتفاصيل بناء البرمجيات في جنو / لينكس

  • مقدمة في وحدة التحكم محرري النصوص(السادس ، نانو ، ماك إديت)

  • العمل مع مصحح أخطاء gdb

  • تجميع البرامج اليدوي والآلي (Makefile)

  • نموذج خادم واجهة العميل (CIS)

  • مبنى مكتبة ثابت

  • المكتبات المشتركة

  • العمل مع متغيرات البيئة

الوحدة 2: عمليات الإدخال / الإخراج والملفات منخفضة المستوى

  • نظرة عامة على آليات Linux I / O (Ubuntu)

  • واصفات الملف

  • مكالمات النظام: افتح ، أغلق ، اكتب ، اقرأ ، و lseek

  • أنواع الملفات

  • Inodes والروابط الصلبة

  • أذونات الملف

  • نظام ملفات proc

  • طريقتان لقراءة محتويات الدليل

  • ملفات متفرقة وتفاصيل استخدامها

  • مناطق الحظر من الملف

الوحدة 3

  • آليات اتصال Linux Interprocess (أوبونتو)

  • أنابيب بدون اسم (أنابيب)

  • الأنابيب المسماة

  • الرسائل (قائمة انتظار الرسائل)

  • ذكريات مشتركه

  • إشارات

الوحدة 4

  • مآخذ في مساحة اسم ملف (مآخذ UNIX)

  • إقران المقابس

  • مآخذ الشبكة (المقابس)

الوحدة 5. الإشارات

  • مقدمة في الإشارات

  • كيف تختلف الإشارات عن آليات الاتصال بين العمليات الأخرى

  • تفاصيل التعامل مع الإشارة

  • الوحدة 6

  • عمليات الاستنساخ - fork ()

  • استبدال عملية التنفيذ - exec ()

  • الزومبي (الزومبي) - أسباب وطرق القضاء عليهم

الوحدة 7الوحدة 8 - المواضيع (تابع)

  • قم بإنشاء معالج إنهاء مؤشر الترابط

  • مزامنة الأوليات

  • سمات الدفق

الوحدة 9: Daemons (الخدمات)

  • الفرق بين البرنامج الخفي وأداة وحدة التحكم

  • تفاصيل تطوير Daemons

  • إنشاء برنامج خفي باستخدام مآخذ الشبكة

الوحدة 10: وحدة التحكم I / O

  • تفاصيل تطوير تطبيقات وحدة التحكم

  • منع إعادة توجيه الإخراج

  • إدارة المحطة

  • إخفاء كلمة مرور المستخدم أثناء المصادقة

  • التحكم في المحطة الطرفية مع تسلسلات ESC

الوحدة 11

  • عرض ملف عادي

  • مشاركة ملف

  • شاشات خاصة

  • استخدامات أخرى لـ mmap

الوحدة 12

  • تفاصيل تطوير تطبيقات 64 بت

  • استخدام مكتبة ncurses

قائد الدورة: سيرجي دولين. مهندس إلكتروني ، مطور برامج Linux (تطبيقي ، اختبار برمجيات للأجهزة ، برامج تشغيل). مطور برامج مضمن. مبرمج لينكس منذ 2011. عملت في OAO NICEVT، JSC Concern Systemprom، OOO PROSOFT (في شركة تابعة لشركة Dolamant).