Linux 4.19 Kernel Kræver nu GCC 4.6 for at opbygge på grund af kompilering af fejl på ældre arkitektur

Linux-Unix / Linux 4.19 Kernel Kræver nu GCC 4.6 for at opbygge på grund af kompilering af fejl på ældre arkitektur 1 minut læst

Linux Kernel Organization, Inc.



For Linux-udviklere, der arbejder på kernen, hæver Linux 4.19-kernen, der skal frigives, GCC-minimumversionen, der kræves til kernelbygning. Den officielle Linux-kerne har angivet GCC 3.2 som minimum version af compileren, der kræves til kernebygning, men Linux-kerne 4.19 hæver den til GCC 4.6.

Dette skyldes, at forskellige arkitekturer på ældre GCC4-udgivelser ikke har været i stand til at kompilere Linux-kernen rent, hvorfor GCC 4.6 sættes som minimum. Kernen vil også eksplicit kontrollere for GCC 4.6.0 eller nyere, og hvis den ikke findes, vil compileren fejle.



Dette er også gavnligt for kernekoden, da kernedevserne var i stand til at fjerne flere dusin linjer kode til ældre GCC-løsninger, der var rettet mod compiler-bugs og adfærdsmæssige forskelle i de ældre compiler-udgivelser.



Denne ændring blev fusioneret lige tidligere i dag via Git commit - og GCC 4.6.0 blev frigivet i 2011, så vi vil se, om GCC også har nogen opdateringer i fremtiden.



Changelog / commit til denne opdatering angiver grundlæggende, at ændringen stort set skyldes, at ældre versioner af GCC-kompilatoren ikke har bygget kernen under forskellige arkitekturer, som nævnt nedenfor:

 Forskellige arkitekturer bygger ikke korrekt med ældre versioner af gcc-kompilatoren. Et eksempel fra Guenter Roeck i tråd [1]:>> I fil inkluderet fra ./include/linux/mm.h:17:0,> fra ./include/linux/pid_namespace.h:7,> fra ./include /linux/ptrace.h:10,> fra arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: fejl: fleksibelt array-medlem i ellers tom struktur> > Dette er blot et eksempel med gcc 4.5.1 for or32. Jeg har også set problemet> med gcc 4.4 (til unicore32). Så opdater den mindst krævede version af gcc til 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Diverse: - Opdater dokumentation / proces / ændringer.rst - Fjern og konsolider versionstestblokke i compiler-gcc.h for versioner under 4.6

For så vidt som LLVM Clang-indsatsen for at opbygge hovedlinjen Linux x86_64-kernen, er der i øjeblikket noget stall med indsatsen, især i LLVMLinux-projektet - selvom der har været noget arbejde med at opbygge kernen gennem ARM Linux-rummet med Clang.