Linux 4.19 Kernel necesită acum GCC 4.6 pentru a construi, din cauza eșecurilor de compilare în arhitectura mai veche

Linux-Unix / Linux 4.19 Kernel necesită acum GCC 4.6 pentru a construi, din cauza eșecurilor de compilare în arhitectura mai veche 1 minut citit

Linux Kernel Organization, Inc.



Pentru dezvoltatorii Linux care lucrează la nucleu, nucleul Linux 4.19 care urmează să fie lansat crește versiunea minimă GCC necesară pentru construirea nucleului. Nucleul oficial Linux a listat GCC 3.2 ca fiind minim versiunea compilatorului necesară pentru construirea nucleului, dar nucleul Linux 4.19 îl ridică la GCC 4.6.

Acest lucru se datorează faptului că diferite arhitecturi de pe versiunile GCC4 mai vechi nu au reușit să compileze în mod curat nucleul Linux, de aceea GCC 4.6 este setat ca minim. Nucleul va verifica, de asemenea, în mod explicit pentru GCC 4.6.0 sau mai nou și, dacă nu este găsit, compilatorul va erori.



Acest lucru este benefic și pentru codul kernel, deoarece dezvoltatorii kernelului au reușit să elimine câteva zeci de linii de cod pentru soluțiile GCC mai vechi care vizau erorile compilatorului și diferențele de comportament în versiunile mai vechi ale compilatorului.



Această modificare a fost fuzionată chiar mai devreme astăzi prin Git commit - iar GCC 4.6.0 a fost lansat în 2011, așa că vom vedea dacă GCC are actualizări și în viitor.



Jurnalul de schimbări / commit pentru această actualizare specifică practic că schimbarea se datorează în întregime din cauza versiunilor mai vechi ale compilatorului GCC care nu reușesc să construiască nucleul sub diferite arhitecturi, după cum se menționează mai jos:

 Diferite arhitecturi nu reușesc să se construiască corect cu versiunile mai vechi ale compilatorului gcc. Un exemplu din Guenter Roeck în firul [1]:>> În fișierul inclus din ./include/linux/mm.h:17:0,> din ./include/linux/pid_namespace.h:7,> din ./include /linux/ptrace.h:10,> din arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: eroare: membru al matricei flexibile în structură altfel goală> > Acesta este doar un exemplu cu gcc 4.5.1 pentru or32. Am văzut problema> și cu gcc 4.4 (pentru unicore32). Așadar, actualizați versiunea minimă necesară a gcc la 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Diverse: - Actualizați Documentația / proces / changes.rst - Eliminați și consolidați blocurile de testare a versiunii în compiler-gcc.h pentru versiuni mai mici de 4.6

În ceea ce privește eforturile LLVM Clang pentru construirea nucleului principal Linux x86_64, există în prezent o serie de eforturi cu eforturile, în special în proiectul LLVMLinux - deși s-au lucrat la construirea nucleului prin spațiul ARM Linux cu Clang.