Logo nl.nowadaytechnol.com

Linux 4.19 Kernel Vereist Nu GCC 4.6 Om Te Bouwen, Vanwege Compilatiefouten Op Oudere Architectuur

Linux 4.19 Kernel Vereist Nu GCC 4.6 Om Te Bouwen, Vanwege Compilatiefouten Op Oudere Architectuur
Linux 4.19 Kernel Vereist Nu GCC 4.6 Om Te Bouwen, Vanwege Compilatiefouten Op Oudere Architectuur

Video: Linux 4.19 Kernel Vereist Nu GCC 4.6 Om Te Bouwen, Vanwege Compilatiefouten Op Oudere Architectuur

Video: Linux 4.19 Kernel Vereist Nu GCC 4.6 Om Te Bouwen, Vanwege Compilatiefouten Op Oudere Architectuur
Video: Linux-kernelarchitectuur 2024, Maart
Anonim
Image
Image

Voor Linux-ontwikkelaars die aan de kernel werken, verhoogt de nog uit te brengen Linux 4.19-kernel de minimale GCC-versie die vereist is voor het bouwen van de kernel. De officiële Linux-kernel heeft GCC 3.2 vermeld als de minimumversie van de compiler die vereist is voor het bouwen van de kernel, maar Linux-kernel 4.19 verhoogt dat naar GCC 4.6.

Dit komt doordat verschillende architecturen op oudere GCC4-releases er niet in geslaagd zijn om de Linux-kernel netjes te compileren, vandaar dat GCC 4.6 als minimum wordt ingesteld. De kernel zal ook expliciet controleren op GCC 4.6.0 of nieuwer en indien niet gevonden, zal de compiler een foutmelding geven.

Dit is ook gunstig voor de kernelcode, aangezien de kernelontwikkelaars enkele tientallen regels code konden verwijderen voor oudere GCC-oplossingen die waren gericht op compilerbugs en gedragsverschillen in de oudere compilerversies.

Deze wijziging werd net eerder vandaag samengevoegd. ViGit commit - en GCC 4.6.0 werd uitgebracht in 2011, dus we zullen zien of GCC ook in de toekomst updates heeft.

De changelog / commit voor deze update geeft in feite aan dat de wijziging vrijwel volledig te wijten is aan het feit dat oudere versies van de GCC-compiler de kernel niet onder verschillende architecturen konden bouwen, zoals hieronder vermeld:

Verschillende architecturen kunnen niet goed worden gebouwd met oudere versies van de gcc-compiler. Een voorbeeld van Guenter Roeck in thread [1]:>> In bestand opgenomen van./include/linux/mm.h:17:0,> van./include/linux/pid_namespace.h:7,> van./include /linux/ptrace.h:10,> van arch / openrisc / kernel / asm-offsets.c: 32:>./include/linux/mm_types.h:497:16: error: flexibel matrixlid in anders lege structuur> > Dit is slechts een voorbeeld met gcc 4.5.1 voor or32. Ik heb het probleem> ook met gcc 4.4 (voor unicore32) gezien. Dus update de minimaal vereiste versie van gcc naar 4.6. [1] https://lore.kernel.org/lkml/20180814170904. [email protected]/ Varia: - Update Documentation / process / changes.rst - Verwijder en consolideer versietestblokken in compiler-gcc.h voor versies lager dan 4.

Wat betreft de inspanningen van LLVM Clang voor het bouwen van de mainline Linux x86_64-kernel, is er momenteel enige vertraging bij de inspanningen, vooral in het LLVMLinux-project - hoewel er wat werk is geweest bij het bouwen van de kernel via de ARM Linux-ruimte met Clang.

Aanbevolen: