cc1plus: त्रुटि: गैर-मान्यताप्राप्त कमांड लाइन विकल्प "-std = c ++ 11" जी ++ के साथ


90

मैं g++या तो -std=c++11या c++0xझंडे का उपयोग कर संकलन करने की कोशिश कर रहा हूं ।

हालाँकि, मुझे यह त्रुटि मिली

cc1plus: error: unrecognized command line option "-std=c++11"

जी ++ --version

g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

5
यह -std=c++0xजी ++ के साथ है
— स्टीफन

2
@stefan गलत, दोनों संभव हैं। आप किस गन्नू संस्करण का उपयोग कर रहे हैं? C ++ 11 केवल> = 4.3 में समर्थित है।
— एंटोनीज

2
दौड़ो g++ --version। इसके बाद यहां वर्जन नंबर पोस्ट करें।
— कोनफल डोलेक्स

3
वह बहुत पुराना है। वह संस्करण C ++ 11 का समर्थन नहीं करता है। C ++ 11 समर्थन के लिए 4.7 जैसे बाद के संस्करण को स्थापित करें।
— कोनफल डोलेक्स

4
यह संभव है कि सीसडमिन ने C ++ 11 सक्षम कंपाइलर स्थापित किया हो , लेकिन इसे डिफ़ॉल्ट नहीं बनाया। आप जाँच सकते हैं कि जीसीसी के कौन से विशिष्ट संस्करण g++-कंसोल विंडो में कमांड को स्वतः पूर्ण करने की कोशिश करके स्थापित किए गए हैं।
— बार्ट वैन इनगेन शेनॉ

जवाबों:


105

अपने G ++ संस्करण से देखकर, आपको इसे बुरी तरह से अपडेट करने की आवश्यकता है। C ++ 11 केवल G ++ 4.3 के बाद से उपलब्ध है। सबसे हालिया संस्करण 4.7 है।

पूर्व-G ++ 4.7 के संस्करणों में, आपको -std=c++0xअधिक हाल के संस्करणों के लिए उपयोग करना होगा -std=c++11।


1
क्या 4.8.0 जाना अच्छा है, या मार्च या कुछ में वास्तविक रिलीज है?
— चिश

@chris मुझे खेद है, यह 4.7 होना चाहिए, 4.8 अभी भी इन-डेवलपमेंट है।
— एंटोनीज

@Antonijn, आह, लगता है मैं एक या दो महीने इंतजार करूँगा। मैं स्थिर रिलीज़ पसंद करता हूं, या इसके लिए जो भी बेहतर शब्द आप उपयोग करना चाहते हैं।
— चिश

@ क्रिस हाँ। या आप बस आपको सूचित करने के लिए linux टकसाल अद्यतन प्रबंधक की प्रतीक्षा करें :)
— antonijn

2
@JoeCoderGuy हां, वह है जिसका मैं उपयोग कर रहा हूं।
— एंटोनीज

14

जीसीसी वेबसाइट से उद्धरण :

C ++ 11 सुविधाएँ GCC के तोड़फोड़ भंडार में और GCC 4.3 और बाद के ट्रंक में "मेनलाइन" GCC कंपाइलर के भाग के रूप में उपलब्ध हैं। C ++ 0x समर्थन को सक्षम करने के लिए, कमांड लाइन पैरामीटर -std = c ++ 0x को अपने g ++ कमांड लाइन में जोड़ें। या, C ++ 0x एक्सटेंशन के अलावा GNU एक्सटेंशन को सक्षम करने के लिए, अपने g ++ कमांड लाइन में -std = gnu ++ 0x जोड़ें। GCC 4.7 और बाद में समर्थन -std = c ++ 11 और -std = gnu ++ 11 साथ ही।

तो शायद आप g ++ के संस्करण का उपयोग करते हैं जो समर्थन नहीं करता है -std=c++11। -std=c++0xइसके बजाय कोशिश करें ।

C ++ 11 सुविधाओं की उपलब्धता केवल संस्करणों = = 4.3 के लिए है।


@Antonijn सही है, लेकिन सभी के लिए एक विकल्प नहीं है।
— स्टीफन

@Antonijn: वहाँ सॉफ्टवेयर है जो संस्करणों के साथ असंगत है> 4.1। उदाहरण के लिए अबेकस informatik.uni-koeln.de/abacus/index.html दुर्भाग्य से पर्याप्त मैं एक बार इसका इस्तेमाल करने के लिए किया था।
— स्टीफन


-4

मुझे भी वही त्रुटि मिली, -D के झंडे को संकलित करते हुए, इसे आज़माएं:

g ++ -Dstd = c ++ 11


यह क्यों ठुकराया गया है? उत्तर में गलत क्या है? यह काम क्यों नहीं करता है?
— वेदा

@ मेरे लिए कम से कम (gcc4.6.3 पर), यह निश्चित रूप से सी ++ 11 के साथ संकलन नहीं कर रहा था। मैंने std::vector<int> v = {1, 2, 3};परीक्षण के साथ एक सरल 2 लाइन प्रोग्राम लिखा था और यह उस पर सभी प्रकार की त्रुटियों को फेंक रहा था (ध्वज के बिना अलग-अलग त्रुटियां, हालांकि, दिलचस्प रूप से पर्याप्त)।
— scohe001

6
@ वेदा जबकि यह उत्तर संकलित करेगा, यह बहुत संभव है कि कुछ भी वांछनीय न करे। -Dकमांड लाइन तर्क एक डालने के बराबर है #defineअपने स्रोत कोड में। तो यह कमांड होने जैसा है #define std c++11। क्या आप सोच सकते हैं कि std::stringइसे कैसे फिर से परिभाषित किया जाएगा c++11::string? बहुत उपयोगी नहीं है।
— jwm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.