जवाबों:
यदि यह एक सरल एकल स्रोत कार्यक्रम है:
make foo
जहाँ स्रोत फ़ाइल foo.c या foo.cpp है, आदि।
तुम भी एक makefile की जरूरत नहीं है। अपनी स्रोत फ़ाइल को एक ही नाम, माइनस एक्सटेंशन के निष्पादन योग्य बनाने के लिए पर्याप्त अंतर्निहित नियम बनाएं।
निष्पादित निष्पादन योग्य बस बनाया गया चलना किसी भी कार्यक्रम को चलाने के समान है - लेकिन आपको निष्पादन योग्य के लिए पथ को निर्दिष्ट करने की सबसे अधिक आवश्यकता होगी क्योंकि शेल केवल खोज करेगा कि $PATH
निष्पादन योग्य को खोजने के लिए क्या है , और सबसे अधिक बार जिसमें वर्तमान निर्देशिका शामिल नहीं है ( .
)।
तो निर्मित निष्पादन योग्य चलाने के लिए foo
:
./foo
make main.cpp
, लेकिन make main
।
gcc main.cpp -o main.out
./main.out
Undefined symbols for architecture x86_64
समस्या के बारे में , मैं कमांड को इस प्रकार संशोधित करता हूं: gcc -lstdc++ main.cpp -o main.out
और यह मेरे मैक पर काम करता है। लिंक के माध्यम से: stackoverflow.com/questions/11852568/…
यह वह कमांड है जो सभी यूनिक्स मशीनों पर काम करता है ... मैं इसे लिनक्स / उबंटू पर उपयोग करता हूं, लेकिन यह ओएस एक्स में भी काम करता है। Terminal.app में निम्न कमांड टाइप करें ।
$ g++ -o lab21 iterative.cpp
-o
अक्षर O शून्य नहीं है
lab21
आपकी निष्पादन योग्य फ़ाइल होगी
iterative.cpp
आपकी c ++ फ़ाइल है
आपके द्वारा प्रोग्राम चलाने के लिए टर्मिनल में निम्नलिखित कमांड टाइप करने के बाद:
$ ./lab21
मेरे लिए दो कदम:
प्रथम:
make foo
फिर:
./foo
./foo
dunno कैसे स्वीकार किए गए उत्तर में कमांड का यह महत्वपूर्ण हिस्सा नहीं है
यूनिक्स में सभी अनुप्रयोग निष्पादन (लिनक्स, मैक ओएस एक्स, एआईएक्स, आदि) पर्यावरण निष्पादन योग्य खोज पथ पर निर्भर करता है।
आप इस कमांड के साथ टर्मिनल में पथ प्रदर्शित कर सकते हैं:
$ PATH प्रतिध्वनि
Mac OS X पर (डिफ़ॉल्ट रूप से) यह निम्न कोलन से अलग किए गए खोज पथ को प्रदर्शित करेगा:
/ Usr / bin: / बिन: / usr / sbin: / sbin: / usr / स्थानीय / बिन: / usr / X11 / बिन
तो सूचीबद्ध निर्देशिकाओं में कोई भी निष्पादन योग्य केवल उनके नाम में लिखकर चला सकता है। उदाहरण के लिए:
cat mytextfile.txt
यह चलाता है /bin/cat
और टर्मिनल के लिए mytextfile.txt प्रदर्शित करता है।
किसी भी अन्य कमांड को चलाने के लिए जो निष्पादन योग्य खोज पथ में नहीं है, इसके लिए आवश्यक है कि आप निष्पादन योग्य के लिए पथ को योग्य करें। तो कहते हैं कि मैं मैक ओएस इलेवन पर अपने घर निर्देशिका में MyProgram नामक एक निष्पादन योग्य था, पूरी तरह से इसे इस तरह से अर्हता प्राप्त कर सकता है:
/ उपयोगकर्ताओं / ओलिवर / 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
यहाँ टिल्ड (~) वर्ण का प्रयोग / उपयोक्ता / जैतून के शॉर्टकट के रूप में किया जा रहा है। यह भी ध्यान दें कि हैश बैंग (#!) लाइन को फ़ाइल की पहली पंक्ति (यदि यह पहले से मौजूद नहीं है) होना चाहिए। यह भी ध्यान दें कि इस तकनीक के लिए आवश्यक है कि आपका लॉगिन शेल बैश हो (मैक ओएस एक्स पर डिफ़ॉल्ट और अधिकांश लिनक्स वितरण)। यह भी ध्यान दें कि यदि आप चाहते हैं कि आपके प्रोग्राम ~/bin
को सिस्टम एक्जीक्यूटेबल्स की वरीयता में इस्तेमाल किया जाए तो आपको निर्यात स्टेटमेंट को निम्नानुसार फिर से व्यवस्थित करना चाहिए:
export PATH=~/bin:$PATH
रयान, मैं इसे एक टिप्पणी के बजाय एक उत्तर देने के लिए बदल रहा हूं, क्योंकि ऐसा प्रतीत होता है कि मैं बहुत संक्षिप्त था। यह सब "टर्मिनल" में करें।
G ++ कंपाइलर का उपयोग करने के लिए, आपको यह करने की आवश्यकता है:
उस निर्देशिका में नेविगेट करें जिसमें आपने * .cpp फ़ाइल संग्रहीत की है।
cd ~/programs/myprograms/
(~ आपके घर के लिए एक शॉर्टकट है, यानी / उपयोगकर्ता / रयान / कार्यक्रम / myprograms /, आपके द्वारा उपयोग किए जाने वाले स्थान के साथ बदलें।)
इसे संकलित करें
g++ input.cpp -o output.bin
(output.bin किसी भी एक्सटेंशन के साथ कुछ भी हो सकता है, वास्तव में बिन यूनिक्स पर सिर्फ आम है।)
सफल होने पर लौटा नहीं होना चाहिए, और यह ठीक है । आमतौर पर आपको विफलताओं पर रिटर्न मिलता है।
हालाँकि, यदि आप टाइप करते हैं, तो आप ls
उसी निर्देशिका में फ़ाइलों की सूची देखेंगे। उदाहरण के लिए आप अन्य फ़ोल्डर्स, input.cpp और output.bin देखेंगे
निर्देशिका के अंदर से, अब इसे निष्पादित करें ./outbut.bin
ऐसा करने के बारे में जाने के लिए एक कॉम्पैक्ट तरीका:
make foo && ./$_
एक-लाइनर रखना अच्छा है, ताकि आप अपने निष्पादन योग्य को फिर से आसानी से चला सकें।
मान लें कि वर्तमान निर्देशिका पथ में नहीं है, तो सिंटैक्स है ./[name of the program]
।
उदाहरण के लिए ./a.out
सर्वश्रेष्ठ चेतावनी प्राप्त करने के लिए निम्नलिखित जोड़ें, आपको इसका पछतावा नहीं होगा। यदि आप कर सकते हैं, संकलन करें (चेतावनी त्रुटि है)
- Wall -pedantic -Weffc++ -Werror
C या C ++ प्रोग्राम को संकलित करने के लिए, एक सामान्य कमांड है:
make filename
./filename
आपके स्रोत फ़ाइल को एक ही नाम से निष्पादन योग्य फ़ाइल में बनाया जाएगा। लेकिन अगर आप मानक तरीके का उपयोग करना चाहते हैं, तो आप c ++ के लिए C प्रोग्राम और g ++ बनाने के लिए gcc कंपाइलर का उपयोग कर सकते हैं
सी के लिए:
gcc filename.c
./a.out
C ++ के लिए:
g++ filename.cpp
./a.out
एक का उपयोग करें makefile
। यहां तक कि बहुत छोटी (= एक-फ़ाइल) परियोजनाओं के लिए, प्रयास संभवतः इसके लायक है क्योंकि आपके पास चीजों को परखने के लिए संकलक सेटिंग्स के कई सेट हो सकते हैं। डिबगिंग और परिनियोजन इस तरह से बहुत आसान काम करता है।
make
मैनुअल पढ़ें , यह पहली नज़र में काफी लंबा लगता है, लेकिन अधिकांश सेक्शंस आप बस खत्म कर सकते हैं। सब के सब यह मुझे कुछ घंटे लग गए और मुझे बहुत अधिक उत्पादक बना दिया।
मुझे यह लिंक दिशा-निर्देशों के साथ मिला:
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)
gcc hello.c -o a.out
? जो जैसा करता है, वैसा ही करता है gcc hello.c
।
बस उस निर्देशिका में दर्ज करें जिसमें आपकी c / cpp फ़ाइल है।
संकलन और सी कोड चलाने के लिए।
$gcc filename.c
$./a.out filename.c
संकलन और चलाने के लिए c ++ कोड।
$g++ filename.cpp
$./a.out filename.cpp
"$" डिफ़ॉल्ट मैक टर्मिनल प्रतीक है
मैक टर्मिनल से एक cpp स्रोत कोड को संकलित करने और चलाने के लिए निम्नलिखित को करने की आवश्यकता है:
टर्मिनल का उपयोग करके एक .C फ़ाइल चलाना एक दो-चरणीय प्रक्रिया है। पहला कदम टर्मिनल में gcc टाइप करना है और .C फ़ाइल को टर्मिनल पर छोड़ना है, और फिर दबाएँ Enter:
username$ gcc /Desktop/test.c
दूसरे चरण में, निम्न कमांड चलाएँ:
username$ ~/a.out
कमांड के नीचे c ++ फाइल्स चलाने के लिए, फाइल का नाम "main.cpp" है।
1. सी फ़ाइल से ऑब्जेक्ट फ़ाइल बनाने के लिएComile।
g++ -c main.cpp -o main.o
2.Since #include <conio.h>
MacOS में समर्थन नहीं करता है इसलिए हमें इसके विकल्प का उपयोग करना चाहिए जो Mac में समर्थन करता है #include <curses.h>
। अब ऑब्जेक्ट फ़ाइल को निष्पादन योग्य फ़ाइल में बदलने की आवश्यकता है। उपयोग करने के लिए curses.h
हमें पुस्तकालय का उपयोग करना होगा -lcurses
।
g++ -o main main.o -lcurses
3.अब निष्पादन योग्य चलाएँ।
./main