كيفية ترجمة وتشغيل C/C++ في وحدة تحكم Unix/Mac؟
سؤال
كيف يمكنني ترجمة/تشغيل C أو C++ في وحدة تحكم Unix أو محطة Mac؟
(أنا أعرف ذلك، إنساه، وأتعلمه مرة أخرى.حان الوقت لكتابة ذلك.)
المحلول
إذا هو بسيط برنامج مصدر واحد:
make foo
حيث الملف المصدر foo.c أو foo.cpp، وما إلى ذلك.
وأنت لا تحتاج حتى MAKEFILE. جعل وقد بنيت في ما يكفي لبناء قواعد الملف المصدر إلى ملف قابل للتنفيذ الذي يحمل نفس الاسم، ناقص التمديد.
وتشغيل الملف القابل للتنفيذ بنيت فقط هو نفس تشغيل أي برنامج - ولكن سوف غالبا ما تحتاج إلى تحديد مسار الملف القابل للتنفيذ كما قذيفة سوف فقط البحث ما هو في $PATH
لإيجاد التنفيذية، وغالبا ما لا يتضمن الدليل الحالي (.
).
وذلك لتشغيل foo
تنفيذ البناء:
./foo
نصائح أخرى
gcc main.cpp -o main.out
./main.out
هذا هو الأمر الذي يعمل على كافة أجهزة يونكس...أستخدمه على Linux/Ubuntu، ولكنه يعمل على OS X أيضًا.اكتب الأمر التالي في Terminal.app.
$ g++ -o lab21 iterative.cpp
-o
هو حرف O وليس صفر
lab21
سيكون الملف القابل للتنفيذ الخاص بك
iterative.cpp
هو ملف c++ الخاص بك
بعد تشغيل هذا الأمر، اكتب ما يلي في الوحدة الطرفية لتشغيل البرنامج:
$ ./lab21
وخطوتين بالنسبة لي:
أولا:
make foo
وبعد ذلك:
./foo
جميع تنفيذ التطبيق في يونيكس (لينكس، ماك OS X، AIX، الخ) بيئة يعتمد على مسار البحث القابل للتنفيذ.
ويمكنك عرض هذا المسار في محطة مع هذا الأمر:
<اقتباس فقرة>صدى $ PATH
اقتباس فقرة>في نظام التشغيل Mac OS X (افتراضيا) هذا سيعرض القولون فصل مسار البحث التالية:
<اقتباس فقرة>و/ البيرة / بن: / بن: / البيرة / دليل: / دليل: / البيرة / المحلية / بن: / البيرة / X11 / بن
اقتباس فقرة>وهكذا أي قابل للتنفيذ في الدلائل المذكورة يمكن من خلال تشغيل فقط عن طريق كتابة باسمهم. على سبيل المثال:
<اقتباس فقرة>والقط mytextfile.txt
اقتباس فقرة> وهذا يعمل /bin/cat
ويعرض mytextfile.txt إلى المحطة.
لتشغيل أي أمر آخر غير موجود في مسار البحث تنفيذي يتطلب أن كنت مؤهلا المسار إلى الملف القابل للتنفيذ. يقول ذلك اضطررت للتنفيذ يسمى MyProgram في بلدي الدليل الرئيسي على نظام التشغيل Mac OS X يمكنني التأهل بالكامل مثل ذلك:
<اقتباس فقرة>و/ المستخدمين / أوليفر / MyProgram
اقتباس فقرة> إذا كنت في الموقع الذي يقع بالقرب من البرنامج الذي يرغب في تنفيذ تتمكن من التأهل الاسم مع مسار جزئي. على سبيل المثال، إذا كان MyProgram
في الدليل /Users/oliver/MyProject
الأول وكنت في دليل بيتي يمكنني التأهل الاسم القابل للتنفيذ من هذا القبيل، ويكون ذلك تنفيذ:
وMyProject / MyProgram
اقتباس فقرة> وأو يقول كنت في /Users/oliver/MyProject2
الدليل وأردت أن تنفيذ /Users/oliver/MyProject/MyProgram
يمكنني استخدام مسار نسبي من هذا القبيل، لتنفيذ ما يلي:
و../ MyProject / MyProgram
اقتباس فقرة> وبالمثل إذا أنا في نفس الدليل MyProgram
أنا بحاجة إلى استخدام "الدليل الحالي" مسار نسبي. الدليل الحالي كنت في هو الحرف فترة يليه خط مائل. على سبيل المثال:
و./ MyProgram
اقتباس فقرة> لتحديد الدليل الذي قيد الاستخدام حاليا الأمر pwd
.
إذا كنت تضع عادة برامج في مكان على القرص الثابت التي ترغب في تشغيلها دون الحاجة إلى التأهل أسمائهم. على سبيل المثال، إذا كان لديك "بن" الدليل في الدليل الرئيسي للمخطوطات قذيفة تستخدم بانتظام من برامج أخرى قد يكون من الحكمة لتغيير مسار البحث القابل للتنفيذ.
وهذا يمكن أن يكون لا بسهولة عن طريق إما إنشاء أو تحرير ملف .bash_profile
الموجودة في الدليل الرئيسي وإضافة خطوط:
#!/bin/sh
export PATH=$PATH:~/bin
وهنا يتم استخدام حرف المد (~) كاختصار ل/ المستخدمين / أوليفر. نلاحظ أيضا أن (#!) خط التجزئة الانفجار يجب أن يكون السطر الأول من الملف (إذا لم تكن بالفعل موجودة). لاحظ أيضا أن هذا الأسلوب يتطلب أن قذيفة دخولك تكون باش (الافتراضي على نظام التشغيل Mac OS X، ومعظم توزيعات لينكس). لاحظ أيضا أنه إذا كنت تريد البرامج المثبتة في ~/bin
لاستخدامها في تفضيل التنفيذية نظامك يجب إعادة ترتيب بيان التصدير كما يلي:
export PATH=~/bin:$PATH
رايان، أقوم بتغيير هذا ليكون إجابة بدلاً من تعليق، حيث يبدو أنني كنت مختصراً للغاية.افعل كل هذا في "المحطة الطرفية".
لاستخدام مترجم G++، عليك القيام بذلك:
انتقل إلى الدليل الذي قمت بتخزين الملف *.cpp فيه.
cd ~/programs/myprograms/
(الرمز ~ هو اختصار لمنزلك، أي/Users/Ryan/programs/myprograms/، استبدله بالموقع الذي استخدمته بالفعل.)تجميعها
g++ input.cpp -o output.bin
(output.bin يمكن أن يكون أي شيء بأي امتداد، حقًا.bin شائع فقط في نظام التشغيل Unix.)يجب أن لا يتم إرجاع أي شيء إذا كان ناجحًا، وهذا هو تمام.عموما تحصل على عوائد على الفشل.
ومع ذلك، إذا كتبت
ls
, ، سترى قائمة الملفات الموجودة في نفس الدليل.على سبيل المثال، قد ترى المجلدات الأخرى، input.cpp وoutput.binمن داخل الدليل، قم بتنفيذه الآن باستخدام
./outbut.bin
وعلى افتراض أن الدليل الحالي ليست في المسار، بناء الجملة ./[name of the program]
.
وعلى سبيل المثال ./a.out
واضافة التالية للحصول على أفضل التحذيرات، فلن نأسف لذلك. إذا كنت تستطيع، وتجميع WISE (التحذير خطأ)
- Wall -pedantic -Weffc++ -Werror
وهناك طريقة مدمجة للذهاب نحو القيام بذلك يمكن أن يكون:
make foo && ./$_
ونيس لديها بطانة واحدة حتى تتمكن من مجرد إعادة تشغيل للتنفيذ الخاص بك مرة أخرى بسهولة.
لتجميع برامج C أو C++، هناك أمر شائع:
make filename
./filename
سيقوم make ببناء الملف المصدر الخاص بك في ملف قابل للتنفيذ يحمل نفس الاسم.ولكن إذا كنت تريد استخدام الطريقة القياسية، فيمكنك استخدام برنامج التحويل البرمجي gcc لإنشاء برامج C وg++ لـ c++
بالنسبة إلى ج:
gcc filename.c
./a.out
بالنسبة لـ C++:
g++ filename.cpp
./a.out
استخدم لmakefile
. حتى ل(= ملف واحد) مشاريع صغيرة جدا، والجهد هو ربما يستحق ذلك لأنك يمكن أن يكون لها عدة مجموعات من إعدادات مترجم لاختبار الأشياء. التصحيح ونشر يعمل أسهل بكثير بهذه الطريقة.
make
دليل ، يبدو طويلا جدا في البداية وهلة لكن معظم المقاطع التي يمكن المقشود فقط على. جميع في كل ما أخذني بضع ساعات وجعلني أكثر إنتاجية.
ولقد وجدت هذا الرابط مع اتجاهات:
<وأ href = "http://www.wesg.ca/2007/11/how-to-write-and-compile-c-programs-on-mac-os-x/" يختلط = "نوفولو noreferrer "> http://www.wesg.ca/2007/11/how-to-write-and-compile-c-programs-on-mac-os-x/
وأساسا تفعله:
gcc hello.c
./a.out (or with the output file of the first command)
فقط أدخل في الدليل الذي يوجد به ملف c/cpp الخاص بك.
لتجميع وتشغيل كود C.
$gcc filename.c
$./a.out filename.c
لتجميع وتشغيل كود C ++.
$g++ filename.cpp
$./a.out filename.cpp
"$" هو رمز محطة Mac الافتراضي
لتجميع وتشغيل كود مصدر CPP من محطة Mac، يجب عليك القيام بما يلي:
- إذا كان مسار ملف cpp هو somePath/fileName.cpp، فانتقل أولاً إلى الدليل باستخدام المسار somePath
- لتجميع fileName.cpp، اكتب c++ fileName.cpp -o fileName
- لتشغيل البرنامج، اكتب ./fileName
وتشغيل ملف .C استخدام المعبر هو عملية من خطوتين. وتتمثل الخطوة الأولى لكتابة دول مجلس التعاون الخليجي في محطة وإسقاط ملف .C إلى المحطة، ثم اضغط على أدخل :
username$ gcc /Desktop/test.c
في الخطوة الثانية، قم بتشغيل الأمر التالي:
username$ ~/a.out