Kernel Linux 4.19 sada zahtijeva izradu GCC 4.6 zbog kompajliranja kvarova na starijoj arhitekturi

Linux-Unix / Kernel Linux 4.19 sada zahtijeva izradu GCC 4.6 zbog kompajliranja kvarova na starijoj arhitekturi 1 minuta čitanja

Linux Kernel Organization, Inc.



Za programere Linuxa koji rade na jezgri, izdana jezgra Linuxa 4.19 podiže GCC minimalnu verziju potrebnu za izgradnju jezgre. Službena Linux jezgra navela je GCC 3.2 kao minimum verzija kompajlera potrebna za izgradnju jezgre, ali Linux kernel 4.19 podiže je na GCC 4.6.

To je zato što razne arhitekture na starijim izdanjima GCC4 nisu uspjele čisto sastaviti Linux jezgru, stoga se GCC 4.6 postavlja kao minimum. Kernel će također izričito provjeriti postoji li GCC 4.6.0 ili noviji, a ako nije pronađen, kompajler će pogrešiti.



To je također korisno za kôd jezgre, jer su programeri jezgre uspjeli ukloniti nekoliko desetaka redaka koda za starija zaobilaženja GCC-a koja su bila usmjerena na bugove kompajlera i razlike u ponašanju u starijim izdanjima kompajlera.



Ova je promjena spojena nešto ranije danas putem Git commit - a GCC 4.6.0 objavljen je 2011. godine, pa ćemo vidjeti hoće li GCC imati ažuriranja i u budućnosti.



Dnevnik promjena / predaja za ovo ažuriranje u osnovi određuje da je promjena uglavnom u potpunosti posljedica toga što starije verzije GCC kompajlera nisu uspjele izgraditi kernel pod raznim arhitekturama, kao što je navedeno u nastavku:

 Razne arhitekture ne uspijevaju se pravilno graditi sa starijim verzijama kompajlera gcc. Primjer Guenter Roecka u niti [1]:>> U datoteci koja je uključena u ./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: pogreška: fleksibilni član niza u inače praznoj strukturi> > Ovo je samo primjer s gcc 4.5.1 za or32. Vidio sam problem> i sa gcc 4.4 (za unicore32). Stoga ažurirajte minimalno potrebnu verziju gcc-a na 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Razno: - Ažurirajte dokumentaciju / proces / promjene.rst - Uklonite i konsolidirajte testne blokove verzija u compiler-gcc.h za verzije niže od 4,6

Što se tiče napora LLVM Clang za izgradnju glavne jezgre Linux x86_64, trenutno postoji zastoj u naporima, posebno u projektu LLVMLinux - iako je bilo nekih radova na izgradnji jezgre kroz ARM Linux prostor s Clangom.