A Linux 4.19-rendszermag mostantól a GCC 4.6-t igényli az építkezéshez, a régebbi architektúrák fordítási hibái miatt

Linux-Unix / A Linux 4.19-rendszermag mostantól a GCC 4.6-t igényli az építkezéshez, a régebbi architektúrák fordítási hibái miatt 1 perc olvasás

Linux Kernel Organization, Inc.



A rendszermaggal foglalkozó Linux fejlesztők számára a kiadásra váró Linux 4.19 rendszermag megemeli a rendszermag építéséhez szükséges minimális GCC verziót. A hivatalos Linux kernel a GCC 3.2-t sorolta fel minimális A fordítónak a rendszermag építéséhez szükséges verziója szükséges, de a Linux 4.19-es rendszermag ezt a GCC 4.6-ra emeli.

Ennek oka, hogy a régebbi GCC4 kiadások különböző architektúrái nem tudták tisztán lefordítani a Linux kernelt, ezért állítják a GCC 4.6 minimumot. A kernel kifejezetten ellenőrzi a GCC 4.6.0 vagy újabb verziót is, és ha nem található, akkor a fordító hibát okoz.



Ez a kernelkód szempontjából is előnyös, mivel a kernel fejlesztői több tucatnyi kódot tudtak kiszedni a régebbi GCC-megoldásokról, amelyek fordítói hibákat és viselkedési különbségeket céloztak meg a régebbi fordítói kiadásokban.



Ezt a változást a mai napon egyesítették a Git kötelezettségvállaláson keresztül - és a GCC 4.6.0 2011-ben jelent meg, így meglátjuk, hogy a GCC a jövőben is rendelkezik-e frissítéssel.



Ennek a frissítésnek a changelog / sitout alapvetően meghatározza, hogy a változás nagyrészt teljes egészében annak köszönhető, hogy a GCC fordító régebbi verziói nem építették fel a rendszermagot különböző architektúrák alatt, amint az alábbiakban megjegyezzük:

 Különböző architektúrák nem épülnek fel megfelelően a gcc fordító régebbi verzióival. Példa Guenter Roeck szálból [1]:>> A ./include/linux/mm.h:17:0,> ./include/linux/pid_namespace.h:7,> from ./include fájlban /linux/ptrace.h:10,> from arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: hiba: rugalmas tömb tag egyébként üres struktúrában> > Ez csak egy példa a gcc 4.5.1 or32 esetén. Láttam a gcc 4.4 problémáját is (az unicore32 esetében). Tehát frissítse a gcc minimálisan szükséges verzióját 4.6-ra. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Vegyes: - Documentation / process / changes.rst frissítése - Távolítsa el és konszolidálja a verzió teszttömbjeit a compiler-gcc.h fájlban a 4.6-nál alacsonyabb verzióknál

Ami az LLVM Clang erőfeszítéseit illeti a Linux x86_64 mainline kernel felépítéséért, jelenleg némi megtorpanás tapasztalható, főleg az LLVMLinux projektben - bár volt némi munka a kern felépítésével az ARM Linux téren a Clang segítségével.