Kernel Linux 4.19 Sekarang Membutuhkan GCC 4.6 untuk Dibangun, Karena Kegagalan Kompilasi pada Arsitektur Lama

Linux-Unix / Kernel Linux 4.19 Sekarang Membutuhkan GCC 4.6 untuk Dibangun, Karena Kegagalan Kompilasi pada Arsitektur Lama 1 menit dibaca

Organisasi Kernel Linux, Inc.



Untuk pengembang Linux yang mengerjakan kernel, kernel Linux 4.19 yang akan dirilis memunculkan versi minimum GCC yang diperlukan untuk pembuatan kernel. Kernel Linux resmi telah mencantumkan GCC 3.2 sebagai minimum versi compiler yang diperlukan untuk pembuatan kernel, tetapi Linux kernel 4.19 meningkatkannya ke GCC 4.6.

Ini karena berbagai arsitektur pada rilis GCC4 yang lebih lama telah gagal untuk mengkompilasi kernel Linux dengan rapi, oleh karena itu GCC 4.6 disetel sebagai minimum. Kernel juga akan secara eksplisit memeriksa GCC 4.6.0 atau yang lebih baru dan jika tidak ditemukan, kompilator akan error.



Ini juga bermanfaat untuk kode kernel, karena pengembang kernel dapat menghapus beberapa lusin baris kode untuk solusi GCC lama yang ditujukan untuk bug kompilator dan perbedaan perilaku dalam rilis kompilator lama.



Perubahan ini baru saja digabungkan hari ini melalui Git commit - dan GCC 4.6.0 dirilis pada tahun 2011, jadi kami juga akan melihat apakah GCC memiliki pembaruan di masa mendatang.



Changelog / komit untuk pembaruan ini pada dasarnya menentukan bahwa perubahan hampir seluruhnya disebabkan oleh versi lama dari kompiler GCC yang gagal membangun kernel di bawah berbagai arsitektur, seperti yang disebutkan di bawah ini:

 Berbagai arsitektur gagal dibangun dengan benar dengan versi compiler gcc yang lebih lama. Contoh dari Guenter Roeck di utas [1]:>> Dalam file disertakan dari ./include/linux/mm.h:17 WindowsFAQ.ru,> dari ./include/linux/pid_namespace.h:7,> dari ./include /linux/ptrace.h:10,> dari arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: error: anggota array fleksibel di struct kosong> > Ini hanyalah sebuah contoh dengan gcc 4.5.1 untuk or32. Saya telah melihat masalahnya> dengan gcc 4.4 (untuk unicore32) juga. Jadi perbarui versi gcc minimum yang diperlukan ke 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Miscellaneous: - Perbarui Dokumentasi / proses / perubahan.rst - Hapus dan gabungkan blok uji versi di compiler-gcc.h untuk versi yang lebih rendah dari 4.6

Sejauh upaya LLVM Clang untuk membangun kernel Linux x86_64 jalur utama, saat ini ada beberapa upaya yang terhenti, terutama dalam proyek LLVMLinux - meskipun ada beberapa pekerjaan dalam membangun kernel melalui ruang ARM Linux dengan Clang.