Ядрото на Linux 4.19 сега изисква GCC 4.6 за изграждане, поради компилиране на неуспехи в по-старата архитектура

Linux-Unix / Ядрото на Linux 4.19 сега изисква GCC 4.6 за изграждане, поради компилиране на неуспехи в по-старата архитектура 1 минута четене

Linux Kernel Organization, Inc.



За разработчиците на Linux, работещи върху ядрото, предстоящото ядро ​​на Linux 4.19 повишава минималната версия на GCC, необходима за изграждане на ядрото. Официалното ядро ​​на Linux изброява GCC 3.2 като минимум версия на компилатора, необходима за изграждане на ядрото, но ядрото на Linux 4.19 повишава това до GCC 4.6.

Това е така, защото различните архитектури на по-старите GCC4 версии не успяват да компилират чисто ядрото на Linux, поради което GCC 4.6 се задава като минимум. Ядрото също ще провери изрично за GCC 4.6.0 или по-нова и ако не бъде намерена, компилаторът ще изведе грешка.



Това също е полезно за кода на ядрото, тъй като разработчиците на ядрото успяха да премахнат няколко десетки реда код за по-стари решения на GCC, които бяха насочени към грешки в компилатора и поведенчески разлики в по-старите версии на компилатора.



Тази промяна беше обединена малко по-рано днес чрез Git commit - и GCC 4.6.0 беше пусната през 2011 г., така че ще видим дали GCC има актуализации и в бъдеще.



Дневникът на промените / ангажирането за тази актуализация основно посочва, че промяната се дължи изцяло на по-старите версии на GCC компилатора, които не успяват да изградят ядрото под различни архитектури, както е отбелязано по-долу:

 Различни архитектури не успяват да се изграждат правилно с по-стари версии на компилатора gcc. Пример от Guenter Roeck в нишка [1]:>> Във файл, включен от ./include/linux/mm.h:17-0,> от ./include/linux/pid_namespace.h:7,> от ./include /linux/ptrace.h:10,> от arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: грешка: гъвкав член на масив в иначе празна структура> > Това е само пример с gcc 4.5.1 за or32. Виждал съм проблема> и с gcc 4.4 (за unicore32). Така че актуализирайте минимално необходимата версия на gcc до 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Разни: - Актуализиране на документация / процес / промени.rst - Премахване и консолидиране на тестови блокове на версиите в compiler-gcc.h за версии под 4.6

Що се отнася до усилията на LLVM Clang за изграждане на основното ядро ​​на Linux x86_64, в момента има известен застой с усилията, особено в проекта LLVMLinux - въпреки че има известна работа по изграждането на ядрото през ARM Linux пространството с Clang.