2009-10-11 14 views
38

रीडमी इस सप्ताह नई Xcode 3.2.1 के साथ शामिल कहते हैं निम्नलिखित:Xcode 3.2.1 जीसीसी बजना और LLVM रहस्योद्घाटन

  • स्टेटिक कोड विश्लेषण पूरी तरह से बिल्ड के माध्यम से Xcode IDE के भीतर एकीकृत और विकल्प का विश्लेषण करें है मेनू बिल्ड के तहत या कस्टम के माध्यम से सेटिंग का निर्माण
  • जीसीसी 4.2 10.6 एसडीके
  • वैकल्पिक LLVM संकलक दो अलग-अलग मोर्चे का उपयोग कर शामिल किया गया है के लिए डिफ़ॉल्ट प्रणाली संकलक है समाप्त होता है - बजना संकलक एक अग्रणी बढ़त पार्सर नाटकीय रूप से प्रदान करता है संकलन समय में सुधार हुआ। अधिकतम संगतता के लिए, जीसीसी एलएलवीएम कंपाइलर जीसीसी 4.2 पार्सर के साथ एलएलवीएम बैक-एंड का उपयोग करता है।
  • नया वैकल्पिक क्लैंग-एलएलवीएम 1.0 कंपाइलर तेजी से संकलन और तेज़ निष्पादन योग्य कोड के लिए एलएलवीएम बैक-एंड कंपाइलर के साथ मिलकर बहुत तेज़ क्लैंग फ्रंट-एंड पार्सर का उपयोग करता है। कई परियोजनाओं को इस कंपाइलर संयोजन से फायदा होगा, हालांकि जीसीसी 4.2 अभी भी सिस्टम डिफ़ॉल्ट है। क्लैंग-एलएलवीएम 1.0 कंपाइलर एलएलवीएम-जीसीसी 4.2 का उपयोग करने के लिए वापस आ जाएगा जब यह सी ++ कोड से मुकाबला करता है।

हमारी कंपनी की मौजूदा परियोजनाएं हैं जो डेस्कटॉप और आईफोन के लिए शुद्ध सी, उद्देश्य-सी, और उद्देश्य-सी ++ हैं। क्या कोई एलएलवीएम, जीसीसी, CLANG, CLANG-LLVM, WordFoo et के बीच उच्च स्तर के अंतरों को सारांशित कर सकता है। अल। और समझाएं कि वे क्या हैं और जब हमें प्रत्येक का उपयोग करना चाहिए और किसके लिए? अधिक विस्तृत स्पष्टीकरण के लिए लिंक होना अच्छा लगेगा, लेकिन मैं वास्तव में एक उच्च स्तरीय अवलोकन की तलाश में हूं।

उत्तर

53

संक्षेप में:

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

  • GCC: अच्छी तरह से ज्ञात संकलक, कई प्रोसेसर आर्किटेक्चर
  • LLVM के लिए विभिन्न भाषाओं के लिए सामने समाप्त होता है और पीछे से समाप्त होता है दोनों शामिल हैं: विभिन्न आर्किटेक्चर के लिए वापस समाप्त होता है (और अन्य निम्न स्तर के सामान) का एक सेट
  • clang: सी, उद्देश्य-सी, और सी ++ के लिए एक नया फ्रंट-एंड; एलएलवीएम बैक-एंड का उपयोग करता है। आपको अपने कंपाइलर और छोटे संकलन समय से अधिक पठनीय त्रुटियां और चेतावनियां मिलेंगी। आपको असंगतताओं या बग का भी सामना करना पड़ सकता है; क्लैंग एक बहुत ही युवा परियोजना है।
  • एलएलवीएम-जीसीसी: एलएलवीएम के बैक एंड के साथ जीसीसी का फ्रंट एंड। एलएलवीएम का बैक-एंड जीसीसी की तुलना में तेज़ है।

क्लैंग (उद्देश्य-) सी ++ समर्थन पूरा होने से बहुत दूर है, इसलिए यह सीवी ++ स्रोत फ़ाइल से मुकाबला करने पर llvm-gcc को कॉल करता है। इसमें स्थैतिक विश्लेषक भी शामिल है जो अब एक्सकोड में एकीकृत है। कुछ लोग कहते हैं कि एलएलवीएम का बैक-एंड जीसीसी की तुलना में बेहतर कोड उत्पन्न करता है लेकिन आपका माइलेज भिन्न हो सकता है। एलएलवीएम लिंक-टाइम अनुकूलन का भी समर्थन करता है (जिसे आप एक्सकोड की परियोजना सेटिंग्स में सक्षम कर सकते हैं)। वे तेजी से कोड उत्पन्न कर सकते हैं।

ऐप्पल जीसीसी को भविष्य में क्लैंग के साथ प्रतिस्थापित करना चाहता है क्योंकि उनके पास जीपीएलवी 3 लाइसेंस प्राप्त कोड (जीसीसी 4.2 अंतिम संस्करण है जो जीपीएलवी 2 के तहत लाइसेंस प्राप्त है) के खिलाफ नीति है।

+0

हाँ, क्लैंग भी त्रुटि के कॉलम को दिखाता है, न केवल लाइन। –

+0

बहुत बढ़िया उत्तर: जब मैं एक्सकोड में * कोडिंग * कर रहा हूं और मुझे एक * पीला * चेतावनी मिलती है जो क्लैंग है? अगर मुझे एक * लाल * त्रुटि मिलती है तो वह क्या है? अगर मुझे रनटाइम * के दौरान i.e. चलाने के बाद कोई त्रुटि मिलती है, तो क्या एलएलवीएम मुझे त्रुटि दे रहा है? – Honey