जीएनयू संस्करणों के साथ जीसीसी और जी ++ की जगह में कोई नुकसान?


1

मैं समझता हूं कि क्लैग मैकओएस के लिए डिफ़ॉल्ट और अनुशंसित कंपाइलर है। डिफ़ॉल्ट रूप से MacOS के लिए बाइनरी है gccऔर g++में /usr/bin/जो जैसे ही हैं clangऔर clang++

क्या संभव मुद्दे हैं (यदि कोई हो), अगर मैं gcc और g ++ बायनेरिज़ के लिए डिफ़ॉल्ट macOS बायनेरिज़ को GNU संस्करणों के साथ बदल दूं?


तुम हमेशा स्थापित कर सकते हैं gccमें /usr/local/...। और समायोजित करें PATH
nohillside

वाह। आपने बस मेरा प्रश्न बदल दिया और इसे "उत्तर" दिया। मुझे पता है कि मैं पथ समायोजित कर सकता हूं और मुझे पता है कि जीसीसी कैसे स्थापित करें। यह मेरा प्रश्न नहीं था, मेरा प्रश्न यह है कि क्या कोई संभव मुद्दे हैं यदि मैं बायनेरिज़ की जगह लेता हूं।
पोइयो 13

आपके प्रश्न में कई प्रश्न छिपे थे, मैंने उनमें से एक पर अपना संपादन केंद्रित किया। आपके संपादन ने स्पष्ट किया कि आप किसी और चीज़ की तलाश में थे, जो पूरी तरह से ठीक है।
nohillside

धन्यवाद। हर सवाल मेरे लिए एक नया सीखने का अनुभव है!
पोइया

जवाबों:


0

बायनेरिज़ को बदलने के साथ कुछ संभावित मुद्दे हैं:

1) जब आप macOS अपडेट करते हैं, तो उन्हें फिर से बदल दिया जा सकता है

2) gcc द्वारा बनाया गया बाइनरी क्लैंग के साथ निर्मित एक से अलग काम कर सकता है

3) कंपाइलर (यानी कमांड लाइन विकल्प के साथ-साथ अन्य इनपुट / आउटपुट फाइल) के लिए इंटरफ़ेस भिन्न हो सकता है, जिसमें थोड़ा अलग रेक्स आदि हो सकते हैं।

सामान्य तौर पर, यदि आप बायनेरिज़ की जगह लेते हैं और कमांड लाइन पर gcc चलाने वाले अपने स्वयं के सॉफ़्टवेयर का निर्माण शुरू करते हैं - जो समस्या के बिना काम करेगा।

समस्या यह है कि आपके कंप्यूटर पर अन्य प्रोग्राम यह मान सकते हैं कि आप वहाँ पर हैं। इसलिए इंस्टॉलर, Xcode, इत्यादि विषम समस्याओं का सामना कर सकते हैं। ज्यादातर शायद यह मामला नहीं है, क्योंकि एक्सकोड जीसीसी बाइनरी नहीं चलाएगा, लेकिन तीसरे पक्ष की परियोजनाओं या पुरानी परियोजनाओं के लिए - यह जानना मुश्किल है।

मूल रूप से: आम तौर पर सिस्टम संकलक बायनेरिज़ को बदलने के लिए जोखिम के लायक नहीं है। बस पक्ष में अपने स्वयं के संकलक के लिए नए बायनेरिज़ जोड़ें (यानी उन्हें होमब्रे या जो भी स्थापित करें)। फिर आप उन संकलक का उपयोग करना चुनते हैं, और बाकी सब कुछ ऐसा व्यवहार करेगा जैसा उसने पहले किया था।

इस प्रश्न के बारे में कि आपने अपने प्रश्न के पहले संपादन में खोज की थी कि Apple ने ऐसा क्यों किया: "यह यूनिक्स सिस्टम पर एक सामान्य घटना है जो पुराने संकलक के लिए पुराने नाम रखना वास्तव में नए संकलक के लिए एक मोर्चा है। यह आमतौर पर पुराने कार्यक्रमों के साथ संगतता प्राप्त करने के लिए किया जाता है। यानी आपके पास एक ऐसा प्रोजेक्ट था जो कंपाइलर नाम के रूप में "cc" के बजाय "gcc" को हार्डकोड करता है, और जब आप क्लैग के साथ gcc को प्रतिस्थापित करते हैं तो हर किसी की बिल्ड स्क्रिप्ट को तोड़ने के बजाय, आप बस एक gcc बाइनरी जोड़ते हैं जो वास्तव में क्लैंग चलाता है। ज्यादातर मामलों में, जो कुछ दुर्लभ मामलों में लोगों द्वारा अपेक्षित आउटपुट का उत्पादन करेगा - यह काम नहीं करता है, और आपको पुराने (या अलग) संकलक को स्वयं स्थापित करना होगा।


जवाब के लिए धन्यवाद। मैं व्यक्तिगत रूप से पुराने कार्यक्रम (उदाहरण के लिए जीसीसी) को स्थापित करता हूं, अगर मैं ओएस के बजाय यह तय कर रहा हूं कि मुझे मेरे लिए क्या चाहिए। लेकिन मैं देख सकता हूं कि कुछ लोगों को इसके बारे में चिंता करने की ज़रूरत नहीं है।
पूय
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.