क्या जीसीसी के बजाय इंटेल के कंपाइलर के साथ पूर्ण लिनक्स सिस्टम संकलित करना संभव है?


26

शायद कुछ संगतता मुद्दे हैं?

मुझे लगता है कि इंटेल-आधारित सिस्टम के लिए, इंटेल कंपाइलर संभवतः जीसीसी की तुलना में बेहतर काम करेगा। शायद पहले से ही एक डिस्ट्रो है जिसने यह प्रयास किया है?

मुझे लगता है कि यह Gentoo का उपयोग करके काफी सीधा हो सकता है।


4
यहाँ कुछ अच्छी जानकारी, जो मुझे पहले मिल जानी चाहिए थी! gentoo-wiki.info/HOWTO_ICC_and_Portage
Barrymac

5
मुझे आपके आधार के बारे में आश्चर्यचकित करना होगा: आप कैसे गेज करते हैं जो संकलक "बेहतर काम" करता है? तेजी से कोड निष्पादन? छोटे बायनेरिज़? तेजी से संकलन समय?
एली हेडी

1
मैं इसे तेजी से कोड पर पहले, छोटे बायनेरिज़ दूसरे पर नापता हूं, लेकिन बाइनरी आकार के बारे में बहुत परवाह नहीं करता जब तक कि यह काफी नाटकीय नहीं था। शायद एक और चिंता ऊर्जा दक्षता हो सकती है
बैरीमैक

जवाबों:


29

आप icc के साथ सब कुछ संकलित नहीं कर पाएंगे। कई कार्यक्रम सी भाषा के लिए जीसीसी एक्सटेंशन का उपयोग करते हैं। हालाँकि इंटेल ने इनमें से अधिकांश एक्सटेंशन का समर्थन करने का भरपूर प्रयास किया है; उदाहरण के लिए, icc के हाल के संस्करण लिनक्स कर्नेल को संकलित कर सकते हैं।

यदि आप एक असामान्य तरीके से अपने सॉफ्टवेयर को फिर से जमा करना पसंद करते हैं तो जेंटू वास्तव में आपका सबसे अच्छा दांव है। Gentoo विकि पर आईसीसी पेज मुख्य बाधा दौड़ का वर्णन है।

पहले एक बुनियादी Gentoo स्थापना करें, और emerge icc। जब तक आप अपने सिस्टम पर icc के साथ संकलित किसी भी द्विआधारी के रूप में बाद में icc को न हटाएं। ध्यान दें कि icc स्थापित है /opt; यदि यह आपके रूट विभाजन पर नहीं है, तो आपको icc पुस्तकालयों को अपने रूट विभाजन में कॉपी करने की आवश्यकता होगी यदि बूट समय पर उपयोग किए गए किसी भी प्रोग्राम को icc के साथ संकलित किया गया है।

सेट करें /etc/portage/bashrcऔर अपने पसंदीदा संकलन विकल्प घोषित करें; अधिक गहन स्क्रिप्ट के लिए जेंटू विकी देखें जो विभिन्न कंपाइलरों के साथ अलग-अलग पैकेज बनाने का समर्थन करता है (यह आवश्यक है क्योंकि icc कुछ पैकेजों को तोड़ता है)।

export OCC="icc" CFLAGS="-O2 -gcc"
export OCXX="icpc" CXXFLAGS="$CFLAGS"
export CC_FOR_BUILD="${OCC}"

13

यह निश्चित रूप से एक दिलचस्प अनुभव होगा। वैकल्पिक कंपाइलर का उपयोग करके पूरे लिनक्स डिस्ट्रो को रिकॉम्प्लिमेंट करना वास्तव में सीधा नहीं होगा। कई आवश्यक पैकेज जीसीसी और अन्य जीएनयू टूलचैन उपयोगिताओं पर निर्भर करते हैं।

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

हालांकि असली सवाल यह है: क्या यह इसके लायक होगा? यदि आप एक एम्बेडेड सिस्टम बनाने की कोशिश कर रहे हैं, तो एक वैकल्पिक संकलक छोटे बायनेरिज़ का उत्पादन कर सकता है। यदि आप एक कंप्यूट क्लस्टर बना रहे हैं, तो आपको तेज कोड निष्पादन मिल सकता है। यदि आप डेस्कटॉप का निर्माण कर रहे हैं, तो आपको सीखने का एक शानदार अनुभव मिलेगा।

मुझे लगता है कि अंत में (यह मानते हुए कि आप एक डेस्कटॉप का निर्माण कर रहे हैं) आपको सही पता चल जाएगा कि कई स्रोत डिस्ट्रो उपयोगकर्ता अंततः क्या तय करते हैं: समय की मात्रा का अनुकूलन और निर्माण और तेजी से कोड निष्पादन से बचाए गए समय को दूर करना और पुनर्निर्माण करना। यह कहना नहीं है कि ऐसा नहीं किया जाना चाहिए - यह काफी मजेदार हो सकता है। यदि आप ऐसा करते हैं, तो यह साइट जवाब खोजने और आपके प्रयासों का दस्तावेजीकरण करने के लिए एक शानदार जगह होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.