G ++

2012-03-16 15 views
5

के स्थान पर मेकफ़ाइल में क्लैंग ++ का उपयोग करना मेरे पास एक मेकफ़ाइल है जो मेरी परियोजना को जी ++ 4.6 के साथ ठीक बनाता है।G ++

#specify the compiler 
GXX=g++ -std=c++0x 

# Specifiy the target 
all: linkedList 

# Specify the object files that the target depends on 
# Also specify the object files needed to create the executable 
linkedList: StudentRecord.o Node.o LinkedList.o ListMain.o 
    $(GXX) StudentRecord.o Node.o LinkedList.o ListMain.o -o linkedList 

# Specify how the object files should be created from source files 
LinkedList.o: LinkedList.cpp 
    $(GXX) -c LinkedList.cpp 

ListMain.o: ListMain.cpp 
    $(GXX) -c ListMain.cpp 

StudentRecord.o: StudentRecord.cpp 
    $(GXX) -c StudentRecord.cpp 

Node.o: Node.cpp 
    $(GXX) -c Node.cpp 

जब मैं पहली बार लाइन बदलने GXX = clang++ -std=c++0x बजना के बारे में iostream उसके बाद कई अन्य त्रुटियों (लेकिन यह "रूट" त्रुटि है) के साथ सही आर्ग या कुछ और नहीं मिल कुछ नहीं बल्कि घने त्रुटि फेंकता किया जाना है।

In file included from /usr/include/c++/4.6/iostream:39: 
In file included from /usr/include/c++/4.6/ostream:39: 
In file included from /usr/include/c++/4.6/ios:40: 
In file included from /usr/include/c++/4.6/bits/char_traits.h:40: 
In file included from /usr/include/c++/4.6/bits/stl_algobase.h:65: 
In file included from /usr/include/c++/4.6/bits/stl_pair.h:60: 
In file included from /usr/include/c++/4.6/bits/move.h:53: 
/usr/include/c++/4.6/type_traits:630:59: error: '_Tp' does not refer to a value 
    : public integral_constant<bool, __is_standard_layout(_Tp)> 

क्या यह मेरी मेकफ़ाइल के साथ एक समस्या है, या वास्तव में इस सरल संकलन में कोई अंतर हो सकता है?

क्लैंग 2.9 का उपयोग करना।

नोट: लाइन बजना उस के बारे में शिकायत कर रहा है #include <iostream>

+0

मैं एक सी ++ विशेषज्ञ नहीं हूँ, लेकिन [यह पेज] (http://clang.llvm.org/cxx_status.html) कि बजना इंगित करने के लिए 2.9 नहीं है लगता है सी ++ 0x के लिए 100% तैयार - शायद यह समस्या का हिस्सा है? –

+0

यह C++ 0x समस्या पर क्रैश नहीं हो रहा है, यह iostream सहित क्रैश हो रहा है मुझे लगता है कि – soandos

+1

त्रुटि संदेश में पथ ऐसा लगता है कि आपको क्लैंग की शीर्षलेख फ़ाइलों की बजाय g ++ 4.6 की शीर्षलेख फ़ाइलें मिल रही हैं। जी ++ हेडर फाइलें जीसीसी-विशिष्ट एक्सटेंशन और सामान का उपयोग करती हैं जो शायद क्लैंग के साथ काम नहीं करतीं। –

उत्तर

0

है आप पर ओएस एक्स शेर (10.7) या माउंटेन शेर (10.8) कर रहे हैं, का उपयोग करें 'C++' (/ usr/bin/सी हैं ++) सीधे 'clang ++' का उपयोग करने के बजाय। भले ही कोई दूसरे के लिए एक सिम्लिंक है, क्लैंग में सी ++ का उपयोग करते समय आप जो अपेक्षा करेंगे, उतना अधिक करने के लिए सही पथ और कंपाइलर विकल्पों को स्थापित करने के लिए कुछ स्मारक हैं।

+0

मैं विंडोज़ – soandos

1

यह एक पुराना सवाल है, लेकिन अगर किसी और में यहां ठोकर खाई जाती है, तो जांच करने के लिए एक बात यह है कि क्या आप क्लैंग एसडीडी लिब का उपयोग कर रहे हैं। उसके लिए आपको ध्वज की जरूरत है:

-stdlib=libc++ 
+0

पर मेकफ़ाइल में इसे कैसे जोड़ूं? – javadba

संबंधित मुद्दे