كيفية تجميع وتشغيل C / C ++ في وحدة تحكم Unix / Mac الطرفية؟

سئل على ٢١ أكتوبر ٢٠٠٨  ·  تمت مشاهدة 542.5k مرة  ·  مصدر

P-A picture
في ٢١ أكتوبر ٢٠٠٨

كيف يمكنني تجميع / تشغيل C أو C ++ في وحدة تحكم Unix أو محطة Mac الطرفية؟

(أعلم ذلك ، انسَه ، وأعد تعلمه مرة أخرى. حان الوقت لكتابته.)

الإجابات

camh picture
في ٢١ أكتوبر ٢٠٠٨
193

إذا كان برنامجًا بسيطًا من مصدر واحد:

make foo

حيث يكون الملف المصدر foo.c أو foo.cpp ، إلخ.

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

تشغيل الملف القابل للتنفيذ الذي تم إنشاؤه للتو هو نفس تشغيل أي برنامج - ولكنك ستحتاج غالبًا إلى تحديد المسار إلى الملف القابل للتنفيذ لأن الصدفة ستبحث فقط عما هو موجود في $PATH للعثور على الملفات التنفيذية ، وغالبًا ما تفعل ذلك عدم تضمين الدليل الحالي ( . ).

لذلك لتشغيل الملف القابل للتنفيذ الذي تم إنشاؤه foo :

./foo
Andrey Neverov picture
في ٢١ أكتوبر ٢٠٠٨
115
gcc main.cpp -o main.out  
./main.out
Komengem picture
في ٢٤ فبراير ٢٠١١
71

هذا هو الأمر الذي يعمل على جميع أجهزة Unix ... أستخدمه على Linux / Ubuntu ، لكنه يعمل أيضًا في OS X. اكتب الأمر التالي في Terminal.app .

$ g++ -o lab21 iterative.cpp

-o هو الحرف O وليس صفرًا

lab21 ملفك القابل للتنفيذ

iterative.cpp هو ملف c ++ الخاص بك

بعد تشغيل هذا الأمر ، اكتب ما يلي في Terminal لتشغيل البرنامج:

$ ./lab21
Victor Augusto picture
في ٢٨ يوليو ٢٠١٤
33

خطوتان بالنسبة لي:

أول:

make foo

ثم:

./foo
orj picture
في ٢٢ أكتوبر ٢٠٠٨
15

يعتمد تنفيذ جميع التطبيقات في بيئة Unix (Linux و Mac OS X و AIX وما إلى ذلك) على مسار البحث القابل للتنفيذ.

يمكنك عرض هذا المسار في الجهاز باستخدام هذا الأمر:

صدى $ PATH

في نظام التشغيل Mac OS X (افتراضيًا) سيعرض هذا مسار البحث التالي مفصول بنقطتين:

/ usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / X11 / bin

لذلك يمكن تشغيل أي ملف تنفيذي في الدلائل المدرجة فقط عن طريق كتابة اسمه. فمثلا:

القط mytextfile.txt

يؤدي هذا إلى تشغيل /bin/cat ويعرض mytextfile.txt على الجهاز.

لتشغيل أي أمر آخر غير موجود في مسار البحث القابل للتنفيذ ، يتطلب منك تأهيل المسار إلى الملف التنفيذي. لنفترض أن لديّ ملفًا تنفيذيًا يسمى MyProgram في دليلي الرئيسي على نظام التشغيل Mac OS XI ، يمكنه تأهيله تمامًا كما يلي:

/ المستخدمون / أوليفر / MyProgram

إذا كنت في موقع قريب من البرنامج الذي ترغب في تنفيذه ، يمكنك تأهيل الاسم بمسار جزئي. على سبيل المثال ، إذا كان MyProgram موجودًا في الدليل /Users/oliver/MyProject كنت وكنت في دليل الصفحة الرئيسية ، فيمكنني تأهيل الاسم القابل للتنفيذ مثل هذا ، وجعله ينفذ:

MyProject / MyProgram

أو لنفترض أنني كنت في الدليل /Users/oliver/MyProject2 وأردت تنفيذ /Users/oliver/MyProject/MyProgram يمكنني استخدام مسار نسبي مثل هذا لتنفيذه:

../MyProject/MyProgram

وبالمثل ، إذا كنت في نفس الدليل مثل MyProgram فأنا بحاجة إلى استخدام المسار النسبي "الدليل الحالي". الدليل الحالي الذي أنت فيه هو رمز الفترة متبوعًا بشرطة مائلة. فمثلا:

./برنامجي

لتحديد الدليل الذي تستخدمه حاليًا ، استخدم الأمر pwd .

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

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

#!/bin/sh
export PATH=$PATH:~/bin

هنا يتم استخدام حرف التلدة (~) كاختصار لـ / Users / oliver. لاحظ أيضًا أن سطر فرقعة التجزئة (#!) يجب أن يكون السطر الأول من الملف (إذا لم يكن موجودًا بالفعل). لاحظ أيضًا أن هذه التقنية تتطلب أن يكون غلاف تسجيل الدخول bash (الافتراضي في نظام التشغيل Mac OS X ومعظم توزيعات Linux). لاحظ أيضًا أنه إذا كنت تريد تثبيت برامجك ~/bin لاستخدامها في تفضيل البرامج التنفيذية للنظام ، فيجب عليك إعادة ترتيب بيان التصدير على النحو التالي:

export PATH=~/bin:$PATH
nerdwaller picture
في ٥ ديسمبر ٢٠١٢
10

رايان ، أقوم بتغيير هذا ليكون إجابة بدلاً من تعليق ، حيث يبدو أنني كنت موجزًا ​​جدًا. افعل كل هذا في "Terminal".

لاستخدام مترجم G ++ ، عليك القيام بذلك:

  1. انتقل إلى الدليل الذي قمت بتخزين ملف * .cpp فيه.

    cd ~/programs/myprograms/
    (يعد ~ اختصارًا لمنزلك ، على سبيل المثال / Users / Ryan / Programs / myprograms / ، استبدل الموقع الذي استخدمته بالفعل.)

  2. تجميعها

    g++ input.cpp -o output.bin (يمكن أن يكون output.bin أي شيء مع أي امتداد ، حقًا. bin هو أمر شائع في يونكس.)

    يجب ألا يتم إرجاع أي شيء إذا كان ناجحًا ، ولا بأس بذلك . بشكل عام تحصل على عوائد من الفشل.

    ومع ذلك ، إذا كتبت ls ، فسترى قائمة الملفات في نفس الدليل. على سبيل المثال ، قد ترى المجلدات الأخرى ، input.cpp و output.bin

  3. من داخل الدليل ، قم بتنفيذه الآن باستخدام ./outbut.bin

markthethomas picture
في ١٤ يناير ٢٠١٥
9

يمكن أن تكون الطريقة المدمجة للقيام بذلك هي:

make foo && ./$_

من الجيد أن يكون لديك سطر واحد حتى تتمكن من إعادة تشغيل ملفك التنفيذي مرة أخرى بسهولة.

P-A picture
في ٢١ أكتوبر ٢٠٠٨
8

بافتراض أن الدليل الحالي ليس في المسار ، فإن بناء الجملة هو ./[name of the program] .

على سبيل المثال ./a.out

Nazgob picture
في ٢١ أكتوبر ٢٠٠٨
7

أضف ما يلي للحصول على أفضل التحذيرات ، فلن تندم. إذا استطعت ، قم بتجميع WISE (التحذير خطأ)

- Wall -pedantic -Weffc++ -Werror
Yogesh Nogia picture
في ١١ أبريل ٢٠١٨
7

لتجميع برامج C أو C ++ ، هناك أمر شائع:

  1. make filename

  2. ./filename

make سيبني ملفك المصدر في ملف قابل للتنفيذ يحمل نفس الاسم. ولكن إذا كنت ترغب في استخدام الطريقة القياسية ، فيمكنك استخدام مترجم gcc لإنشاء برامج C & g ++ لـ ++ c

بالنسبة لـ C:

gcc filename.c

./a.out

بالنسبة لـ C ++:

g++ filename.cpp

./a.out