ตอนนี้เคอร์เนล Linux 4.19 ต้องการ GCC 4.6 ในการสร้างเนื่องจากการคอมไพล์ล้มเหลวในสถาปัตยกรรมรุ่นเก่า

ลินุกซ์ - ยูนิกซ์ / ตอนนี้เคอร์เนล Linux 4.19 ต้องการ GCC 4.6 ในการสร้างเนื่องจากการคอมไพล์ล้มเหลวในสถาปัตยกรรมรุ่นเก่า อ่าน 1 นาที

Linux Kernel Organization, Inc.



สำหรับนักพัฒนา Linux ที่ทำงานบนเคอร์เนลเคอร์เนล Linux 4.19 ที่จะเปิดตัวจะเพิ่มเวอร์ชันขั้นต่ำของ GCC ที่จำเป็นสำหรับการสร้างเคอร์เนล เคอร์เนล Linux อย่างเป็นทางการได้ระบุ GCC 3.2 เป็นไฟล์ ขั้นต่ำ เวอร์ชันของคอมไพเลอร์ที่จำเป็นสำหรับการสร้างเคอร์เนล แต่เคอร์เนล Linux 4.19 กำลังเพิ่มเป็น GCC 4.6

เนื่องจากสถาปัตยกรรมต่างๆใน GCC4 รีลีสรุ่นเก่าล้มเหลวในการคอมไพล์เคอร์เนล Linux อย่างหมดจดดังนั้นทำไม GCC 4.6 จึงถูกตั้งค่าเป็นค่าต่ำสุด เคอร์เนลจะตรวจสอบ GCC 4.6.0 หรือใหม่กว่าอย่างชัดเจนและหากไม่พบคอมไพเลอร์จะผิดพลาด



นอกจากนี้ยังเป็นประโยชน์สำหรับโค้ดเคอร์เนลเนื่องจากผู้พัฒนาเคอร์เนลสามารถตัดโค้ดออกได้หลายสิบบรรทัดสำหรับวิธีแก้ปัญหา GCC รุ่นเก่าที่มุ่งเป้าไปที่จุดบกพร่องของคอมไพเลอร์และความแตกต่างของพฤติกรรมในคอมไพเลอร์รีลีสรุ่นเก่า



การเปลี่ยนแปลงนี้ได้รวมเข้าด้วยกันก่อนหน้านี้ในวันนี้ผ่านทาง Git และ GCC 4.6.0 ได้รับการเผยแพร่ในปี 2011 ดังนั้นเราจะดูว่า GCC มีการอัปเดตในอนาคตหรือไม่



บันทึกการเปลี่ยนแปลง / คอมมิตสำหรับการอัปเดตนี้โดยทั่วไประบุว่าการเปลี่ยนแปลงค่อนข้างมากเนื่องจากคอมไพเลอร์ 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 ฉันได้เห็นปัญหา> กับ gcc 4.4 (สำหรับ unicore32) เช่นกัน ดังนั้นอัปเดตเวอร์ชันขั้นต่ำที่ต้องการของ gcc เป็น 4.6 [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ เบ็ดเตล็ด: - Update Documentation / process / changes.rst - ลบและรวมบล็อกทดสอบเวอร์ชันในคอมไพเลอร์ -gcc.h สำหรับเวอร์ชันที่ต่ำกว่า 4.6

เท่าที่ความพยายามของ LLVM Clang ในการสร้างเคอร์เนลหลักของ Linux x86_64 ปัจจุบันมีความพยายามบางอย่างโดยเฉพาะอย่างยิ่งในโครงการ LLVMLinux แม้ว่าจะมีงานบางอย่างในการสร้างเคอร์เนลผ่านพื้นที่ ARM Linux ด้วย Clang