Linux 4.19 Çekirdeği, Eski Mimarideki Derleme Hataları nedeniyle Artık GCC 4.6'nın Oluşturulmasını Gerektiriyor

Linux-Unix / Linux 4.19 Çekirdeği, Eski Mimarideki Derleme Hataları nedeniyle Artık GCC 4.6'nın Oluşturulmasını Gerektiriyor 1 dakika okundu

Linux Kernel Organization, Inc.



Çekirdek üzerinde çalışan Linux geliştiricileri için, piyasaya sürülecek Linux 4.19 çekirdeği, çekirdek oluşturma için gereken GCC minimum sürümünü yükseltir. Resmi Linux çekirdeği, GCC 3.2'yi şu şekilde listelemiştir: minimum Çekirdek oluşturma için derleyicinin sürümü gerekli, ancak Linux çekirdeği 4.19 bunu GCC 4.6'ya yükseltiyor.

Bunun nedeni, eski GCC4 sürümlerindeki çeşitli mimarilerin Linux çekirdeğini temiz bir şekilde derleyememesi, dolayısıyla GCC 4.6'nın minimum olarak ayarlanmasıdır. Çekirdek ayrıca GCC 4.6.0 veya daha yenisini açıkça kontrol edecek ve bulunamazsa derleyici hata verecektir.



Çekirdek geliştiricileri, derleyici hatalarını ve eski derleyici sürümlerindeki davranış farklılıklarını hedefleyen eski GCC geçici çözümleri için birkaç düzine kod satırını çıkarabildiğinden, bu çekirdek kodu için de yararlıdır.



Bu değişiklik bugün daha erken saatlerde Git commit aracılığıyla birleştirildi ve GCC 4.6.0 2011'de yayınlandı, bu nedenle GCC'nin gelecekte de güncellemesi olup olmadığını göreceğiz.



Bu güncelleştirme için değişiklik günlüğü / kesinleştirme, temel olarak değişikliğin büyük ölçüde tamamen GCC derleyicisinin eski sürümlerinin çekirdeği çeşitli mimariler altında oluşturmada başarısız olmasından kaynaklandığını belirtir:

 Çeşitli mimariler, gcc derleyicisinin eski sürümleriyle düzgün bir şekilde oluşturulamaz. Guenter Roeck'ten [1] dizisindeki bir örnek:> ./include/linux/mm.h:17:0,> ./include/linux/pid_namespace.h:7'den dahil edilen dosyada ./include /linux/ptrace.h:10,> arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: hata: aksi takdirde boş yapıdaki esnek dizi üyesi> > Bu, or32 için gcc 4.5.1 ile yalnızca bir örnektir. Sorunu> gcc 4.4 (unicore32 için) ile de gördüm. Bu nedenle gerekli minimum gcc sürümünü 4.6'ya güncelleyin. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Çeşitli: - Belgeleri / process / changes.rst dosyasını güncelleyin - 4.6'dan daha düşük sürümler için compiler-gcc.h'deki sürüm test bloklarını kaldırın ve birleştirin

LLVM Clang'ın ana hat Linux x86_64 çekirdeğini oluşturma çabalarına gelince, şu anda, özellikle LLVMLinux projesinde, Clang ile ARM Linux alanı aracılığıyla çekirdeği oluşturmaya yönelik bazı çalışmalar yapılmasına rağmen, çabalarda bir miktar kesinti yaşanmaktadır.