„Linux 4.19“ branduoliui dabar reikalinga GCC 4.6, kad būtų galima sukurti dėl senesnės architektūros kompiliavimo klaidų

„Linux-Unix“ / „Linux 4.19“ branduoliui dabar reikalinga GCC 4.6, kad būtų galima sukurti dėl senesnės architektūros kompiliavimo klaidų 1 minutė perskaityta

„Linux“ branduolio organizacija, Inc.



„Linux“ kūrėjams, dirbantiems su branduoliu, išleidžiamas „Linux 4.19“ branduolys pakelia GCC minimalią versiją, reikalingą branduolio kūrimui. Oficialiame „Linux“ branduolyje GCC 3.2 nurodytas kaip minimumas kompiliatoriaus versija, reikalinga branduolio kūrimui, tačiau „Linux“ branduolio 4.19 versija iškeliama į 4.6 GCC.

Taip yra todėl, kad įvairiose senesnių GCC4 versijų architektūrose nepavyko švariai kompiliuoti „Linux“ branduolio, todėl GCC 4.6 yra nustatytas kaip minimalus. Branduolys taip pat aiškiai patikrins, ar nėra GCC 4.6.0 ar naujesnės versijos, o jei nerandama, kompiliatorius suklaidins klaidą.



Tai taip pat naudinga branduolio kodui, nes branduolio kūrėjai galėjo pašalinti kelias dešimtis senesnių GCC problemų sprendimo būdų kodų, skirtų kompiliatoriaus klaidoms ir elgesio skirtumams senesniuose kompiliatoriaus leidimuose.



Šis pakeitimas buvo sujungtas tik anksčiau per „Git įsipareigoti“ - o GCC 4.6.0 buvo išleistas 2011 m., Todėl pamatysime, ar GCC turi atnaujinimų ir ateityje.



Šio naujinimo „changelog“ / „įsipareigoti“ iš esmės nurodo, kad pakeitimą iš esmės lemia tai, kad senesnės GCC kompiliatoriaus versijos nesugeba sukurti branduolio įvairiose architektūrose, kaip nurodyta toliau:

 Įvairių architektūrų nepavyksta tinkamai sukurti naudojant senesnes gcc kompiliatoriaus versijas. Pavyzdys iš Guenterio Roecko gijoje [1]:>> Į failą įtraukta iš ./include/linux/mm.h:17:0,> iš ./include/linux/pid_namespace.h:7,> from ./include /linux/ptrace.h:10,> iš arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: klaida: lankstus masyvo narys kitaip tuščioje struktūroje> > Tai tik pavyzdys su gcc 4.5.1 or32. Aš taip pat mačiau problemą> su gcc 4.4 (skirta „unicore32“). Taigi atnaujinkite minimalią reikalaujamą gcc versiją į 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Įvairūs: - Atnaujinti dokumentaciją / process / changes.rst - Pašalinti ir sujungti versijų bandymo blokus kompiliatoriaus gcc.h versijose, kurios yra žemesnės nei 4.6

Kalbant apie „LLVM Clang“ pastangas kuriant pagrindinį „Linux x86_64“ branduolį, šiuo metu pastangos šiek tiek stringa, ypač įgyvendinant „LLVMLinux“ projektą, nors buvo nemažai pastangų kuriant branduolį per „ARM Linux“ erdvę su „Clang“.