C ++ प्रोग्राम को संकलित करने और चलाने के लिए एक कमांड क्या है?


89

मैं लिनक्स के लिए नया हूँ। मैं Ubuntu 11.04 का उपयोग कर रहा हूं और यह नहीं जानता कि इसमें C ++ प्रोग्राम को कैसे संकलित और निष्पादित करना है। मुझे लिनक्स में C ++ प्रोग्राम को संकलित और निष्पादित करने के लिए कमांड जानने की आवश्यकता है ।


1
क्या किसी उत्तर ने आपकी मदद की?
lindhe

जवाबों:


108

अपने c ++ कोड को संकलित करने के लिए, उपयोग करें:

g++ foo.cpp

foo.cpp उदाहरण में संकलित किए जाने वाले प्रोग्राम का नाम है।

यह उसी निर्देशिका में एक निष्पादन योग्य उत्पादन करेगा a.outजिसे आप अपने टर्मिनल में टाइप करके चला सकते हैं:

./a.out

g ++ पहले से ही आपके $ PATH में होना चाहिए, इसलिए आपको /usr/bin/g++स्पष्ट रूप से कॉल करने की आवश्यकता नहीं है , लेकिन आप किसी भी स्थिति में बाद का उपयोग कर सकते हैं।

foo.cppउसी निर्देशिका में होना चाहिए जिससे आप कमांड चला रहे हैं। यदि कोई संदेह है, तो आप यह सुनिश्चित कर सकते हैं कि आप उसी निर्देशिका में टाइप कर रहे हैं ls foo.cppया head foo.cpp(यदि आपको सत्यापित करने की आवश्यकता है कि आप सही काम कर रहे हैं foo)।

जैसा कि @ con-f-use द्वारा उल्लेख किया गया है, कंपाइलर आमतौर पर इस फाइल को निष्पादन योग्य बना देगा, लेकिन यदि नहीं, तो आप इसे स्वयं कर सकते हैं (इसलिए निष्पादित करने के लिए कमांड, ./a.outया समकक्ष, काम करेंगे):

chmod +x ./a.out

संकलित आउटपुट फ़ाइल का नाम निर्दिष्ट करने के लिए, ताकि यह नाम न हो a.out, -oअपने g ++ कमांड के साथ उपयोग करें।

उदाहरण के लिए

g++ -o output foo.cpp

यह foo.cppनामित बाइनरी फ़ाइल के लिए संकलित होगा output, और आप ./outputसंकलित कोड को चलाने के लिए टाइप कर सकते हैं ।


6
कंपाइलर आमतौर पर बाइनरी ( a.outइस मामले में) निष्पादन योग्य बनाता है । यदि नहीं तो आप टाइप करके ऐसा कर सकते हैं: chmod +x a.out। जब आपका संकलित कार्यक्रम निष्पादन योग्य होता है, तो आप इसे टाइप कर सकते हैं ./a.out- डॉट और स्लैश संकेत, कि आप इसे निष्पादित करना चाहते हैं।
con-f-use

@ राजेशकुमार, क्या आपको अपनी पसंद का इनमें से एक उत्तर मिला? यदि ऐसा है तो क्या आप उनमें से एक को स्वीकृत उत्तर के रूप में चिह्नित कर सकते हैं (ऊपर / नीचे वोट तीरों के नीचे टिक टिक करके) तो हम इस मुद्दे के नीचे एक रेखा खींच सकते हैं।

क्या g ++ foo.c -o आउटपुट और g ++ -o आउटपुट foo.c के बीच अंतर है?
गोल्डनाम ऑक्ट

21

मैं यहाँ दो धारणाएँ बना रहा हूँ:

  1. आपके पास पहले से ही C ++ सोर्स फाइल / प्रोग्राम तैयार है
  2. आपने अपने कंप्यूटर पर एक बिल्ड सिस्टम स्थापित किया है

उबंटू, या उस मामले के लिए किसी भी अन्य लिनक्स डिस्ट्रो पर सी ++ प्रोग्राम को संकलित करने का सबसे सरल तरीका टाइप करना है

g++ main.cpp -o main
  • जी ++ जीसीसी के सी ++ घटक का आह्वान है , सी / सी ++ के लिए डिफैक्टो कंपाइलर और लिनक्स प्लेटफॉर्म पर अन्य भाषाओं के पूरे मेजबान। यह वर्तमान में केवल एकमात्र कंपाइलर है जो लिनक्स कर्नेल को संकलित करने में सक्षम है।
  • main.cpp c ++ स्रोत फ़ाइल है जिसे आप संकलित करना चाहते हैं।
  • -तो मुख्य आउटपुट फ़ाइल का नाम निर्दिष्ट करता है जिसे आप स्रोत संकलित करने के बाद बनाना चाहते हैं। यदि आप चाहें, तो लक्ष्य स्रोत फ़ाइल और लक्ष्य आउटपुट फ़ाइल उलटी हो सकती है, इसलिए g++ -o main main.cppसमान रूप से मान्य है।
  • फिर उस प्रोग्राम को निष्पादित करने के लिए, आपको टर्मिनल में ./main करना होगा।

उपरोक्त कमांड मानती हैं कि आप पहले से ही स्रोत फ़ाइलों के स्थान पर हैं, लेकिन स्रोत फ़ाइल और लक्ष्य आउटपुट फ़ाइल दोनों को एक निर्देशिका के रूप में भी निर्दिष्ट किया जा सकता है। उदाहरण के लिए

g++ ~/Desktop/main.cpp -o ~/Projects/main

आपके डेस्कटॉप पर स्थित C ++ स्रोत फ़ाइल संकलित करेगा और निष्पादन योग्य बाइनरी Projectsको आपके होम निर्देशिका में एक फ़ोल्डर में रखेगा । इस निष्पादन योग्य को चलाने के लिए, चलाएं ./Projects/main


5

इस तरह से मुझे g ++ के साथ संकलन करना पसंद है।

$g++ -W -Wall -pedantic -o programName -p sourceFile.cpp

-W: Print extra warning messages for some problems.
-Wall: Enable all the warnings about questionable code
-pedantic: Show all the warnings demanded by strict ISO compliance
-o programName: place the executable output in programName sourceFile.cpp: the 
name of our source code file
-p: Generate extra code to write profile information suitable for the analysis program prof

1
-p: Generate extra code to write profile information suitable for the analysis program prof.
हंस

मुझे आपका जवाब पसंद है। यह अतिरिक्त सुझाव लाता है। लेकिन आपको इसे आम तौर पर स्वीकार्य होने के लिए फिर से वाक्यांश देना चाहिए।
LinuxSecurityFreak

1

आपको g ++ की आवश्यकता है, क्योंकि gcc आसानी से cpp फ़ाइल को संकलित नहीं कर सकता है।
C कोड लिखने के लिए आपको vim या emacs भी सीखना होगा।
बस अपने टर्मिनल पर यह कोशिश करें:

एक परीक्षण कार्यक्रम टाइप करें और इसे सहेजें:

$vim hello.cc

hello.ccजी ++ के साथ संकलन :

$g++ hello.cc -o hello

इसे निष्पादित करो:

$./hello

यहां ./मौजूदा डीआईआर के तहत एक्सई फाइल का मतलब है।


3
gcc C और C ++ कंपाइलर के लिए GNU कंपाइलर है। और ओ को सी कोड लिखने के लिए vim या emacs जानने की आवश्यकता नहीं है, अन्य टेक्स्ट संपादकों और IDE के बहुत सारे हैं।
नितिन वेंकटेश

3
हालाँकि मुझे विम से प्यार है, अगर कोई पहले से ही किसी समस्या को चलाने का पता लगाने के लिए संघर्ष करता है, तो विम का सुझाव देना बहुत उपयोगी नहीं है।
जोहान्डव

मुझे व्यक्तिगत रूप से पसंद नहीं है vi, लेकिन इससे कोई फर्क नहीं पड़ता। आपको एक विशिष्ट संपादक का सुझाव देने से बचना चाहिए, हर कोई वैसे भी उसका उपयोग करता है।
LinuxSecurityFreak

0

g++gccकुछ पूर्वनिर्धारित c ++ मैक्रो और विभिन्न डिफ़ॉल्ट विकल्पों / झंडों के साथ (GNU कम्पाइलर कलेक्शन) फ्रंट-एंड है ।

किसी भी संख्या में कारणों से उपलब्ध नहीं gccहोने पर c ++ कोड को संकलित करना आसान g++है, वास्तव में यह c ++ लाइब्रेरी से जोड़ने -lstdc++और इनपुट को c ++ कोड के रूप में व्यवहार करने के लिए सूचित करने का मामला है (या तो एक .Cएक्सटेंशन का उपयोग करके , या भाषा को मजबूर करने के लिए) -x)
अन्य वैध c ++ फ़ाइल नाम प्रत्यय: .cc, .cp, .cxx, .cpp, .CPP,.c++

उदाहरण :

gcc cpp_code.C -lstdc++ अपरकेस विस्तार ( .C) gcc के लिए यह जानना महत्वपूर्ण है कि यह c ++ फ़ाइल है।

या इनपुट भाषा को स्पष्ट रूप से निर्दिष्ट करना:

gcc -x c++ cpp_code.txt -lstdc++ विस्तार कुछ भी हो सकता है, या कुछ भी नहीं

डिफ़ॉल्ट रूप से परिणाम (एक सफल संकलन के बाद) एक a.outफ़ाइल है जिसे साथ चलाया जा सकता है./a.out


आपका उत्तर अधिक जानकारीपूर्ण है
बिलल बेगुएरदज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.