Jadro systému Linux 4.19 teraz vyžaduje na zostavenie GCC 4.6 z dôvodu zlyhaní kompilácie staršej architektúry

Linux-Unix / Jadro systému Linux 4.19 teraz vyžaduje na zostavenie GCC 4.6 z dôvodu zlyhaní kompilácie staršej architektúry 1 minúta čítania

Organizácia Linux Kernel, Inc.



Pre vývojárov systému Linux pracujúcich na jadre zvyšuje budúce vydanie systému Linux 4.19 minimálnu verziu GCC požadovanú na vytvorenie jadra. Oficiálne jadro Linuxu uviedlo GCC 3.2 ako minimum verzia kompilátora potrebná na vytvorenie jadra, ale jadro Linuxu 4.19 ju zvyšuje na GCC 4.6.

Je to preto, že rôzne architektúry na starších vydaniach GCC4 zlyhali pri čistej kompilácii jadra Linuxu, a preto je GCC 4.6 nastavený ako minimum. Jadro tiež výslovne skontroluje, či nie je GCC 4.6.0 alebo novší, a ak sa nenájde, kompilátor sa pokazí.



To je tiež výhodné pre kód jadra, pretože vývojári jadra dokázali odstrániť niekoľko desiatok riadkov kódu pre staršie riešenia GCC, ktoré boli zamerané na chyby kompilátora a rozdiely v správaní v starších vydaniach kompilátora.



Táto zmena bola dnes zlúčená skôr prostredníctvom Git commit - a GCC 4.6.0 bol vydaný v roku 2011, takže uvidíme, či bude GCC mať nejaké aktualizácie aj v budúcnosti.



Zoznam zmien / potvrdenie pre túto aktualizáciu v podstate určuje, že zmena je takmer úplne dôsledkom toho, že staršie verzie kompilátora GCC zlyhali pri vytváraní jadra podľa rôznych architektúr, ako je uvedené nižšie:

 Rôzne architektúry sa nedokážu správne zostaviť so staršími verziami kompilátora gcc. Príklad od Guenter Roecka vo vlákne [1]:>> V súbore zahrnutom z ./include/linux/mm.h:17:0,> z ./include/linux/pid_namespace.h:7,> z ./include /linux/ptrace.h:10,> z arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: chyba: člen flexibilného poľa v inak prázdnej štruktúre> > Toto je len príklad s gcc 4.5.1 pre or32. Videl som problém> aj s gcc 4.4 (pre unicore32). Aktualizujte teda minimálnu požadovanú verziu gcc na 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Zmiešaný: - Aktualizácia dokumentácie / procesu / changes.rst - Odstránenie a konsolidácia blokov testovania verzie v kompilátore-gcc.h pre verzie nižšie ako 4,6

Pokiaľ ide o úsilie LLVM Clang o vybudovanie hlavného jadra Linuxu x86_64, v súčasnosti existuje určité zastavenie, najmä v projekte LLVMLinux - aj keď pri vytváraní jadra prostredníctvom priestoru ARM Linux s Clangom sa už trochu pracovalo.