Jedro Linuxa 4.19 zdaj zahteva sestavo GCC 4.6 zaradi prevajalskih napak na starejši arhitekturi

Linux-Unix / Jedro Linuxa 4.19 zdaj zahteva sestavo GCC 4.6 zaradi prevajalskih napak na starejši arhitekturi 1 minuto branja

Linux Kernel Organization, Inc.



Za razvijalce Linuxa, ki delajo na jedru, bodoče jedro Linuxa 4.19 zviša minimalno verzijo GCC, potrebno za gradnjo jedra. Uradno jedro Linuxa je GCC 3.2 navedlo kot najmanj različica prevajalnika, potrebna za gradnjo jedra, toda Linux jedro 4.19 jo dvigne na GCC 4.6.

Različne arhitekture v starejših izdajah GCC4 namreč niso uspele čisto prevesti jedra Linuxa, zato je GCC 4.6 določen kot minimum. Jedro bo tudi izrecno preverilo, ali obstaja GCC 4.6.0 ali novejši, in če ga ne najde, bo prevajalnik napako odpravil.



To je koristno tudi za kodo jedra, saj so razvijalci jedra lahko odstranili več deset vrstic kode za starejša rešitev GCC, ki so bila namenjena napakam prevajalnika in vedenjskim razlikam v starejših izdajah prevajalnika.



Ta sprememba je bila združena tik prej danes s pomočjo Git commit - in GCC 4.6.0 je bil izdan leta 2011, zato bomo videli, ali bo GCC imel kakšne posodobitve tudi v prihodnje.



Dnevnik sprememb / prevzem za to posodobitev v bistvu določa, da je sprememba v veliki meri posledica starejših različic prevajalnika GCC, ki niso uspele zgraditi jedra pod različnimi arhitekturami, kot je navedeno spodaj:

 Različne arhitekture s starejšimi različicami prevajalnika gcc ne uspejo pravilno zgraditi. Primer Guenterja Roecka v niti [1]:>> V datoteki, vključeni iz ./include/linux/mm.h:17-0,> iz ./include/linux/pid_namespace.h:7,> iz ./include /linux/ptrace.h:10,> iz arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: napaka: prilagodljiv član polja v sicer prazni strukturi> > To je le primer z gcc 4.5.1 za or32. Tudi pri gcc 4.4 (za unicore32) sem videl težavo>. Torej posodobite minimalno zahtevano različico gcc na 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Razno: - Posodobi dokumentacijo / proces / spremembe.rst - Odstrani in konsolidiraj preizkusne bloke različic v compiler-gcc.h za različice, nižje od 4.6

Kar zadeva prizadevanja LLVM Clang za izgradnjo glavnega jedra Linuxa x86_64, je trenutno nekaj zastojev, zlasti v projektu LLVMLinux - čeprav je bilo nekaj dela pri gradnji jedra prek prostora ARM Linux s Clangom.