Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

GCC से C++ प्रोग्राम कंपाइल करना


यहां हम देखेंगे कि GCC (GNU C कंपाइलर) का उपयोग करके C++ प्रोग्राम कैसे कंपाइल करें। मान लें, हम इस प्रोग्राम को कंपाइल करना चाहते हैं।

उदाहरण प्रोग्राम

#include <iostream>
using namespace std;

int main() {
    cout << "Hello World. यह C++ प्रोग्राम है" << endl;
    return 0;
}

यदि यह C प्रोग्राम है, तो हम GCC से ऐसे कंपाइल कर सकते हैं:

gcc test.c

लेकिन यदि हम उस स्थान पर C++ फ़ाइलनाम डालते हैं, तो यह कुछ त्रुटि उत्पन्न कर सकता है।

gcc test.cpp

आउटपुट (लिंकर त्रुटि)

/tmp/ccf1KGDi.o: In function `main':
test.cpp:(.text+0xe): undefined reference to `std::cout'
test.cpp:(.text+0x13): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<<...'
...
collect2: error: ld returned 1 exit status

यह कंपाइलेशन त्रुटि नहीं है। यह लिंकिंग त्रुटि है। सही लिंकर जोड़ने के लिए, हमें -lstdc++ विकल्प का उपयोग करना होगा।

gcc test.cpp -lstdc++

आउटपुट

$ ./a.out
Hello World. यह C++ प्रोग्राम है

व्याख्या

  • gcc ड्राइवर फाइल एक्सटेंशन के आधार पर सही फ्रंटएंड चुनता है (.cpp → C++ कंपाइलर)।
  • हालांकि, gcc लिंकर चरण में ऑटोमैटिकली C++ स्टैंडर्ड लाइब्रेरी (libstdc++) लिंक नहीं करता।
  • g++ ड्राइवर ऑटोमैटिकली -lstdc++ जोड़ता है।

सही तरीके

विधिकमांडटिप्पणी
सिफारिश (C++ के लिए)g++ test.cppसबसे सरल, ऑटो लिंकिंग
gcc के साथ मैनुअलgcc test.cpp -lstdc++काम करता है लेकिन मैनुअल
अलग कंपाइल + लिंकg++ -c test.cpp -o test.o && g++ test.o -o testबड़े प्रोजेक्ट्स के लिए
C++ मानक निर्दिष्ट करेंg++ -std=c++17 test.cppआधुनिक C++ के लिए

अन्य सामान्य लिंकर फ्लैग्स

# पथ्रेड्स लिंक करें
g++ -pthread thread_demo.cpp

# मैथ लाइब्रेरी लिंक करें
g++ -lm math_demo.cpp

# कस्टम लाइब्रेरी पथ
g++ -L/path/to/lib -lmylib main.cpp

# स्टेटिक लिंकिंग (आमतौर पर अनुशंसित नहीं)
g++ -static test.cpp

सर्वोत्तम अभ्यास: C++ कोड के लिए हमेशा g++ (या clang++) का उपयोग करें। यह सही लिंकिंग और C++-विशिष्ट विकल्पों के डिफ़ॉल्ट सुनिश्चित करता है।

  1. - C++ प्रोग्राम: n पीक के साथ क्रमचय ढूंढें

    A[i+1]। यदि यह संभव नहीं है, तो -1 वापस करें। उदाहरण के लिए, यदि इनपुट n = 5; k = 2 है, तो आउटपुट [2, 4, 1, 5, 3] होगा, अन्य उत्तर भी संभव हैं। चरण इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे: (n - 1) / 2, then:    return -1 Define an array a of size: 101. for initialize i :=

  1. - त्रिज्या R वाले वृत्ताकार तालाब की परिधि ढूंढने के लिए C++ प्रोग्राम

    मान लीजिए हमारे पास एक संख्या R है, जो एक तालाब की त्रिज्या को दर्शाती है। हमें इस तालाब की परिधि ढूंढनी है। उदाहरण के लिए, यदि इनपुट R = 73 है, तो आउटपुट 458.67252742410977361942 होगा। चरण इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे: res := r * 2 * cos-inverse (-1) res वापस करें बेहतर सम

  1. कुछ शर्तों के साथ ग्राफ बनाने के लिए C++ प्रोग्राम कुछ शर्तों के साथ ग्राफ बनाने के लिए C++ प्रोग्राम

    मान लीजिए हमारे पास दो संख्याएं N और K हैं। N तत्वों वाला एक निदेशित ग्राफ पर विचार करें। N शीर्ष निम्नलिखित शर्तों को पूरा करते हैं: ग्राफ सरल और जुड़ा हुआ है शीर्ष 1 से N तक गिने जाते हैं मान लें M ग्राफ में किनारों की संख्या है। किनारों को 1 से M तक गिना जाता है। किनारे की लंबाई 1 है। और किनारा