लिनक्स 4.19 कर्नेल अब पुराने आर्किटेक्चर पर संकलन विफलताओं के कारण, जीसीसी 4.6 को बनाने की आवश्यकता है

लिनक्स यूनिक्स / लिनक्स 4.19 कर्नेल अब पुराने आर्किटेक्चर पर संकलन विफलताओं के कारण, जीसीसी 4.6 को बनाने की आवश्यकता है 1 मिनट पढ़ा

लिनक्स कर्नेल संगठन, इंक।



लिनक्स कर्नेल पर काम करने वाले डेवलपर्स के लिए, जारी किया जाने वाला लिनक्स 4.19 कर्नेल कर्नेल बिल्डिंग के लिए आवश्यक GCC न्यूनतम संस्करण को उठाता है। आधिकारिक लिनक्स कर्नेल ने GCC 3.2 को सूचीबद्ध किया है न्यूनतम कर्नेल बिल्डिंग के लिए आवश्यक कंपाइलर का संस्करण, लेकिन लिनक्स कर्नेल 4.19 जो कि जीसीसी 4.6 तक बढ़ा रहा है।

ऐसा इसलिए है क्योंकि पुराने जीसीसी 4 रिलीज पर विभिन्न आर्किटेक्चर लिनक्स कर्नेल को साफ करने में विफल रहे हैं, इसलिए जीसीसी 4.6 को न्यूनतम के रूप में सेट किया जा रहा है। कर्नेल जीसीसी 4.6.0 या नए के लिए भी स्पष्ट रूप से जांच करेगा और यदि नहीं मिला, तो कंपाइलर त्रुटि करेगा।



यह कर्नेल कोड के लिए भी लाभकारी है, क्योंकि कर्नेल देव पुराने GCC वर्कअराउंड के लिए कोड की कई दर्जन पंक्तियों को अलग करने में सक्षम थे जो कि कंपाइलर बग और पुराने संकलक रिलीज में व्यवहार के अंतर के उद्देश्य से थे।



यह परिवर्तन Git प्रतिबद्ध के माध्यम से आज से पहले ही विलय कर दिया गया था - और GCC 4.6.0 को 2011 में जारी किया गया था, इसलिए हम देखेंगे कि क्या भविष्य में GCC के पास भी कोई अपडेट है या नहीं।



इस अद्यतन के लिए चैंज / प्रतिबद्ध मूल रूप से यह निर्दिष्ट करता है कि परिवर्तन पूरी तरह से जीसीसी संकलक के पुराने संस्करणों के कारण है जो विभिन्न आर्किटेक्चर के तहत कर्नेल के निर्माण में विफल है, जैसा कि नीचे दिया गया है:

 विभिन्न आर्किटेक्चर gcc संकलक के पुराने संस्करणों के साथ ठीक से निर्माण करने में विफल रहते हैं। थ्रेड में Guenter Roeck से एक उदाहरण [1]:> से फाइल में शामिल ./include/linux/mm.h:17 का उपयोग करें,> से ./include/linux/pid_namespace.h7,> से .include /linux/ptrace.h:10,> आर्च / ओपन्रिस्क / कर्नेल / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: त्रुटि: अन्यथा खाली संरचना में लचीला सरणी सदस्य>। > यह or32 के लिए gcc 4.5.1 के साथ एक उदाहरण है। मैंने समस्या देखी है gcc 4.4 के साथ (unicore32 के लिए)। इसलिए gcc के न्यूनतम आवश्यक संस्करण को 4.6 में अपडेट करें। [१] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ कई तरह का: - अपडेट डॉक्यूमेंटेशन / प्रोसेस / चेंजेस.rst - कंपाइलर-gcc.h वर्जन के वर्जन को हटाएं और मजबूत करें

जहाँ तक मुख्य लाइन लिनक्स x86_64 कर्नेल के निर्माण के लिए एलएलवीएम क्लैंग के प्रयासों का है, वर्तमान में प्रयासों के साथ कुछ स्टाल है, विशेष रूप से एलएलवीएमआईएनएक्सएक्स प्रोजेक्ट में - हालांकि क्लैंग के साथ एआरएम स्पेस के माध्यम से कर्नेल के निर्माण में कुछ काम हुआ है।