Linux 4.19 Kernel Kini Memerlukan GCC 4.6 untuk Dibangun, Kerana Menyusun Kegagalan pada Senibina yang Lebih Lama

Linux-Unix / Linux 4.19 Kernel Kini Memerlukan GCC 4.6 untuk Dibangun, Kerana Menyusun Kegagalan pada Senibina yang Lebih Lama 1 minit dibaca

Linux Kernel Organization, Inc.



Bagi pembangun Linux yang mengerjakan kernel, kernel Linux 4.19 yang akan dilepaskan meningkatkan versi minimum GCC yang diperlukan untuk pembinaan kernel. Kernel Linux rasmi telah menyenaraikan GCC 3.2 sebagai minimum versi penyusun yang diperlukan untuk pembinaan kernel, tetapi kernel Linux 4.19 menaikkannya ke GCC 4.6.

Ini kerana pelbagai arkitek pada rilis GCC4 yang lebih tua gagal menyusun kernel Linux dengan bersih, oleh sebab itu mengapa GCC 4.6 ditetapkan sebagai minimum. Kernel juga akan secara eksplisit memeriksa GCC 4.6.0 atau yang lebih baru dan jika tidak dijumpai, penyusun akan melakukan kesalahan.



Ini juga bermanfaat untuk kod kernel, kerana kernel dev dapat melepaskan beberapa lusin baris kod untuk penyelesaian GCC yang lebih tua yang ditujukan untuk bug penyusun dan perbezaan tingkah laku dalam pelepasan kompilator yang lebih lama.



Perubahan ini digabungkan lebih awal hari ini melalui Git commit - dan GCC 4.6.0 dirilis pada tahun 2011, jadi kami akan melihat apakah GCC mempunyai kemas kini di masa depan juga.



Perubahan / komitmen untuk kemas kini ini pada dasarnya menentukan bahawa perubahan tersebut sepenuhnya disebabkan oleh versi lama penyusun GCC yang gagal membina kernel di bawah pelbagai seni bina, seperti yang dinyatakan di bawah:

 Pelbagai seni bina gagal dibina dengan betul dengan versi kompilator gcc yang lebih lama. Contoh dari Guenter Roeck dalam utas [1]:>> Dalam fail yang disertakan dari ./include/linux/mm.h:17:0,> 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: ralat: anggota array fleksibel dalam struktur yang kosong> > Ini hanyalah contoh dengan gcc 4.5.1 untuk or32. Saya juga pernah melihat masalah> dengan gcc 4.4 (untuk unicore32). Oleh itu, kemas kini versi minimum gcc yang diperlukan kepada 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Pelbagai: - Kemas kini Dokumentasi / proses / perubahan.rst - Keluarkan dan satukan blok ujian versi di compiler-gcc.h untuk versi yang lebih rendah daripada 4.6

Sejauh usaha LLVM Clang untuk membangun kernel Linux x86_64 utama, saat ini ada beberapa usaha yang harus dilakukan, terutama dalam proyek LLVMLinux - walaupun ada beberapa pekerjaan dalam membangun kernel melalui ruang ARM Linux dengan Clang.