يتطلب Linux 4.19 Kernel الآن إصدار 4.6 GCC للإنشاء ، بسبب تجميع حالات الفشل في الهندسة المعمارية القديمة

لينكس يونكس / يتطلب Linux 4.19 Kernel الآن إصدار 4.6 GCC للإنشاء ، بسبب تجميع حالات الفشل في الهندسة المعمارية القديمة قراءة دقيقة واحدة

مؤسسة Linux Kernel، Inc.



بالنسبة لمطوري Linux الذين يعملون على kernel ، فإن إصدار Linux 4.19 kernel الذي سيتم إصداره يرفع الحد الأدنى من إصدار GCC المطلوب لبناء النواة. أدرجت نواة لينكس الرسمية GCC 3.2 على أنها الحد الأدنى نسخة من المجمع المطلوب لبناء النواة ، لكن Linux kernel 4.19 يرفع ذلك إلى GCC 4.6.

ويرجع ذلك إلى أن العديد من البنى على الإصدارات الأقدم من GCC4 قد فشلت في تجميع نواة Linux بشكل سليم ، ولهذا السبب تم تعيين GCC 4.6 كحد أدنى. ستتحقق النواة أيضًا بشكل صريح من GCC 4.6.0 أو أحدث ، وإذا لم يتم العثور عليها ، فسيتم خطأ المترجم.



يعد هذا مفيدًا أيضًا لرمز kernel ، حيث تمكن مطورو النواة من تجريد عشرات الأسطر من التعليمات البرمجية لحلول مجلس التعاون الخليجي القديمة التي كانت تهدف إلى أخطاء المترجم والاختلافات السلوكية في إصدارات المترجم الأقدم.



تم دمج هذا التغيير في وقت سابق اليوم عبر Git الالتزام - وتم إصدار GCC 4.6.0 في عام 2011 ، لذلك سنرى ما إذا كان لدى GCC أي تحديثات في المستقبل أيضًا.



يحدد سجل التغيير / الالتزام لهذا التحديث بشكل أساسي أن التغيير يرجع بالكامل إلى حد كبير إلى الإصدارات القديمة من مترجم GCC التي فشلت في بناء النواة تحت العديد من البنى ، كما هو مذكور أدناه:

 تفشل البنى المختلفة في البناء بشكل صحيح مع الإصدارات القديمة من برنامج التحويل البرمجي لدول مجلس التعاون الخليجي. مثال من Guenter Roeck في الموضوع [1]:>> في ملف مضمن من ./include/linux/mm.h:17:0 ،> from ./include/linux/pid_namespace.h:7،> from ./include /linux/ptrace.h:10،> من arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: خطأ: عضو مصفوفة مرنة في بنية فارغة بخلاف ذلك> > هذا مجرد مثال مع gcc 4.5.1 لـ or32. لقد رأيت المشكلة مع دول مجلس التعاون الخليجي 4.4 (بالنسبة لـ unicore32) أيضًا. لذا قم بتحديث الحد الأدنى من الإصدار المطلوب من دول مجلس التعاون الخليجي إلى 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ متنوع: - تحديث الوثائق / العملية / التغييرات. rst - إزالة ودمج كتل اختبار الإصدار في compiler-gcc.h للإصدارات الأقل من 4.6

فيما يتعلق بجهود LLVM Clang لبناء نواة Linux x86_64 الرئيسية ، هناك حاليًا بعض المماطلة في الجهود ، لا سيما في مشروع LLVMLinux - على الرغم من وجود بعض العمل في بناء النواة من خلال مساحة ARM Linux مع Clang.