Linuxi 4.19 kernel nõuab vanema arhitektuuri kompileerimisprobleemide tõttu nüüd GCC 4.6 ehitamist

Linux-Unix / Linuxi 4.19 kernel nõuab vanema arhitektuuri kompileerimisprobleemide tõttu nüüd GCC 4.6 ehitamist 1 minut loetud

Linuxi tuumaorganisatsioon, Inc.



Tuuma kallal töötavate Linuxi arendajate jaoks tõstab ilmuv Linux 4.19 kernel tuuma ehitamiseks vajaliku GCC miinimumversiooni. Ametlik Linuxi tuum on GCC 3.2 loetlenud minimaalselt Kerneli loomiseks vajalik kompilaatori versioon, kuid Linuxi kernel 4.19 tõstab selle versioonile GCC 4.6.

Selle põhjuseks on asjaolu, et vanemate GCC4 versioonide erinevad arhitektuurid pole suutnud Linuxi kernelit puhtalt kompileerida, mistõttu GCC 4.6 seatakse miinimumiks. Kernel kontrollib selgesõnaliselt ka GCC 4.6.0 või uuemat versiooni ja kui seda ei leita, veab kompilaator viga.



See on kasulik ka kernelikoodi jaoks, kuna kerneli arendajad suutsid mitmete tosinate koodiridade eemaldamiseks GCC vanemate lahenduste jaoks, mis olid suunatud kompilaatori vigadele ja käitumise erinevustele vanemates kompilaatori väljaannetes.



See muudatus liideti täna Git engili kaudu just varem - ja GCC 4.6.0 ilmus 2011. aastal, nii et näeme, kas GCC-l on ka tulevikus värskendusi.



Selle värskenduse changelog / committ täpsustab põhimõtteliselt, et muudatus on peaaegu täielikult tingitud sellest, et GCC kompilaatori vanemad versioonid ei suutnud kernelit erinevate arhitektuuride abil ehitada, nagu allpool märgitud:

 Erinevaid arhitektuure ei õnnestu gcc-kompilaatori vanemate versioonidega korralikult üles ehitada. Näide Guenter Roeckilt lõimes [1]:>> Failis, mis sisaldub ./include/linux/mm.h:17:0,> from ./include/linux/pid_namespace.h:7,> from ./include /linux/ptrace.h:10,> from arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: tõrge: paindlik massiivi liige muidu tühjas struktuuris> > See on vaid näide or32 jaoks mõeldud gcc 4.5.1-st. Olen näinud probleemi> ka gcc 4.4-ga (unicore32 jaoks). Nii värskendage gcc minimaalselt nõutav versioon versioonile 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Mitmesugused: - Värskenda dokumentatsiooni / process / changes.rst - Eemaldage ja konsolideerige versiooni testiblokid versioonist compiler-gcc.h alla 4.6

Mis puutub LLVM Clangi jõupingutustesse Linuxi x86_64 pealiini kerneli loomiseks, siis praegu on need pingutused mõnevõrra takerdunud, eriti LLVMLinuxi projektis - ehkki tuuma ülesehitamisel ARM Linuxi ruumi kaudu koos Clangiga on tööd tehtud.