तकनीकी तौर पर, clang
या clang++
नामित कार्यक्रमों में से न तो एक संकलक है: वे दोनों ड्राइवरों कि इनपुट तर्क का विश्लेषण और क्या compilers/अस्सेम्ब्लेर्स/linkers क्या क्या कमांड लाइन तर्क के साथ फाइल पर आह्वान करने के लिए निर्धारित कर रहे हैं। दोनों के बीच एकमात्र अंतर यह है कि clang
केवल सी मानक लाइब्रेरी के खिलाफ लिंक करता है यदि यह एक लिंक करता है, जबकि clang++
दोनों C++ और C मानक पुस्तकालयों के विरुद्ध लिंक।
-x=<language>
विकल्प स्रोत फ़ाइल भाषा निर्धारित करने के लिए ड्राइवर प्रोग्राम की हेरिस्टिक को ओवरराइड करता है, यह ड्राइवर को <language>
पर संकलक को आमंत्रित करने के लिए निर्देशित करता है।
-std=<dialect>
विकल्प चुनता है कि आप किस विशेष भाषा का उपयोग करना चाहते हैं। यदि आपको यह सुनिश्चित करने की आवश्यकता है कि आपका सी ++ प्रोग्राम पुराना सी ++ 98 कंपाइलर पोर्टेबल है, तो आप इसे -std=c++98
से संकलित कर सकते हैं। -std
केवल लक्ष्य भाषा पर लागू होता है: यह संकलित करने का प्रयास नहीं करेगा। असेंबलर या जावा सी ++ 98 के रूप में, केवल स्रोत फाइलें जो चालक सी ++ मानती हैं।
संक्षेप में, दो अलग-अलग ड्राइवर प्रोग्राम हैं जो चुनने में आसान हैं कि कौन से पुस्तकालयों के खिलाफ लिंक करना है। सी ++ संकलन के लिए उचित उपयोग के मामले हैं लेकिन सी ++ मानक पुस्तकालय के खिलाफ लिंक नहीं कर रहे हैं।
डाउनवॉट्स के साथ क्या चल रहा है? हां, मैं समझता हूं कि क्लैंग ++ सी ++ के लिए क्लैंग को कॉन्फ़िगर करने के लिए सिर्फ एक लिंक है। यह मेरा सवाल नहीं है, कृपया फिर से देखें। यदि यह * इतना * सरल है तो कृपया डाउनवोट के बजाय उत्तर दें। – djwbrown
यह प्रश्न अपने चौथे संशोधन में एक पूरी तरह से वैध सवाल है कि मुझे बंद करने या डाउनवोट करने के लिए मतदान करने का कोई कारण नहीं दिखता है। यह एक "क्यों ...?" प्रश्न है, लेकिन इसका दायरा इतना छोटा है कि उम्मीद है कि आम तौर पर सहमत एक तर्क के रूप में एक तर्क के रूप में पेश किया जाएगा। –
प्रश्न में 'std = C++ 11 stdlib = libC++ 'होना चाहिए' -std = C++ 11 -stdlib = libC++'? –