एलएलवीएम मूल रूप से "निम्न-स्तरीय वर्चुअल मशीन" के लिए खड़ा था, हालांकि अब यह सिर्फ अपने लिए खड़ा है क्योंकि यह पारंपरिक वर्चुअल मशीन के अलावा कुछ और हो गया है। यह पुस्तकालयों और उपकरणों का एक सेट है, साथ ही मानक मानकीकृत प्रतिनिधित्व, जिसका उपयोग कंपेलरों और बस-समय के कंपाइलर्स बनाने में मदद के लिए किया जा सकता है। यह अपने स्वयं के मध्यवर्ती प्रतिनिधित्व के अलावा कुछ भी संकलित नहीं कर सकता है; ऐसा करने के लिए इसे एक भाषा-विशिष्ट अग्रभाग की आवश्यकता है। अगर लोग सिर्फ एलएलवीएम का संदर्भ लेते हैं, तो शायद उनका मतलब केवल निम्न स्तर की लाइब्रेरी और टूल्स है। कुछ लोग क्लैंग या एलएलएमएम-जीसीसी को "एलएलवीएम" के रूप में गलत तरीके से संदर्भित कर सकते हैं, जो कुछ भ्रम पैदा कर सकता है।
LLVM-जीसीसी जीसीसी का एक संशोधित संस्करण है, जो अपने बजाय बैकएंड जीसीसी के स्वयं के रूप में LLVM का उपयोग करता है। इसे ड्रैगनएग के पक्ष में अब हटा दिया गया है, जो जीसीसी को बिना किसी काम के जीसीसी की नई प्लगइन प्रणाली का उपयोग करता है।
क्लैंग एक नया सी/सी ++/ऑब्जेक्टिव-सी कंपाइलर है, जो बैकएंड के रूप में अपने स्वयं के फ्रंटएंड और एलएलवीएम का उपयोग करता है। इसके द्वारा प्रदान किए जाने वाले फायदे बेहतर त्रुटि संदेश, तेज़ संकलन समय और संकलन प्रक्रिया (LLDB debugger और Clang static analyzer) जैसे अन्य टूल के लिए एक आसान तरीका है। यह भी उचित मॉड्यूलर है, और इसलिए अन्य सॉफ़्टवेयर के लिए लाइब्रेरी के रूप में उपयोग किया जा सकता है जिसे सी, सी ++, या ऑब्जेक्टिव-सी कोड का विश्लेषण करने की आवश्यकता होती है।
इन तरीकों में से प्रत्येक (सादा जीसीसी, जीसीसी + LLVM, और बजना) अपने फायदे और नुकसान है। मैंने देखा है कि बेंचमार्क के आखिरी कुछ सेटों ने जीसीसी को अधिकांश परीक्षण मामलों में थोड़ा तेज़ कोड बनाने के लिए दिखाया है (हालांकि एलएलवीएम में कुछ मामूली बढ़त थी), जबकि एलएलवीएम और क्लैंग ने काफी बेहतर संकलन समय दिया था।जीसीसी और जीसीसी/एलएलवीएम कोम्बो का लाभ यह है कि बहुत अधिक कोड का परीक्षण किया गया है और सी के जीसीसी स्वाद पर काम करता है; कुछ कंपाइलर विशिष्ट एक्सटेंशन हैं जिनमें केवल जीसीसी है, और कुछ ऐसे स्थान जहां मानक कार्यान्वयन को अलग-अलग करने की अनुमति देता है लेकिन कोड एक विशेष कार्यान्वयन पर निर्भर करता है। यदि आपको बड़ी संख्या में विरासत सी कोड मिलता है तो यह बहुत अधिक संभावना है कि यह जीसीसी में काम करेगा, यह क्लैंग में काम करेगा, हालांकि यह समय के साथ सुधार रहा है।
स्रोत
2011-04-18 20:49:04
llvm केवल एक बैकएंड है, एक स्टैंडअलोन llvm कंपाइलर नहीं हो सकता है ... इसके लिए केवल अलग-अलग अग्रभाग हैं, जैसे कि जीसीसी और क्लैंग। – smerlin
@ स्मारकिन: "llvm कंपाइलर" क्लैंग + llvm के लिए ऐप्पल का व्यापार नाम है: http://developer.apple.com/technologies/tools/whats-new.html#llvm-compiler –
अन्य विवरण यहां: http: // stackoverflow .com/a/26724886/1 9 38163 –