Ang Linux 4.19 Kernel Ngayon ay Nangangailangan ng GCC 4.6 na Itayo, Dahil sa Mga Pagkabigo sa Pag-compile sa Mas Matandang Arkitektura

Linux-Unix / Ang Linux 4.19 Kernel Ngayon ay Nangangailangan ng GCC 4.6 na Itayo, Dahil sa Mga Pagkabigo sa Pag-compile sa Mas Matandang Arkitektura 1 minuto basahin

Ang Linux Kernel Organization, Inc.



Para sa mga developer ng Linux na nagtatrabaho sa kernel, itataas ng Linux 4.19 kernel ang itinaas na minimum na bersyon ng GCC para sa pagbuo ng kernel. Ang opisyal na Linux kernel ay nakalista sa GCC 3.2 bilang minimum bersyon ng kinakailangang tagatala para sa pagbuo ng kernel, ngunit ang Linux kernel 4.19 ay tinataas iyon sa GCC 4.6.

Ito ay dahil ang iba't ibang mga arkitektura sa mas matandang paglabas ng GCC4 ay nabigo na malinis na maipon ang Linux kernel, kaya't kung bakit ang GCC 4.6 ay itinatakda bilang pinakamaliit. Malinaw ding susuriin ng kernel ang GCC 4.6.0 o mas bago at kung hindi nahanap, mag-e-error ang tagatala.



Kapaki-pakinabang din ito para sa code ng kernel, dahil ang mga kernel devs ay nakakuha ng ilang dosenang mga linya ng code para sa mas matandang mga workout ng GCC na naglalayon sa mga bug ng compiler at pagkakaiba-iba ng pag-uugali sa mas matandang paglabas ng compiler.



Ang pagbabago na ito ay isinama nang mas maaga ngayon sa pamamagitan ng Git commit - at ang GCC 4.6.0 ay inilabas noong 2011, kaya makikita natin kung ang GCC ay mayroon ding mga pag-update sa hinaharap.



Ang changelog / gumawa para sa pag-update na ito ay karaniwang tumutukoy na ang pagbabago ay lubos na ganap dahil sa mga mas lumang bersyon ng tagatala ng GCC na hindi nabuo ang kernel sa ilalim ng iba't ibang mga arkitektura, tulad ng nabanggit sa ibaba:

 Ang iba't ibang mga arkitektura ay nabigo na bumuo nang maayos sa mga mas lumang bersyon ng gcc compiler. Isang halimbawa mula sa Guenter Roeck sa thread [1]:>> Sa file na kasama mula sa ./include/linux/mm.h:17:0,> mula sa ./include/linux/pid_namespace.h:7,> mula sa ./include /linux/ptrace.h:10,> mula sa arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h 497:16: error: kakayahang umangkop na miyembro ng array sa kung hindi man walang laman na istr> > Ito ay isang halimbawa lamang sa gcc 4.5.1 para sa or32. Nakita ko ang problema> sa gcc 4.4 (para sa unicore32) din. Kaya i-update ang minimum na kinakailangang bersyon ng gcc sa 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Iba't ibang: - I-update ang Dokumentasyon / proseso / pagbabago.rst - Alisin at pagsamahin ang mga bloke ng pagsubok sa bersyon sa compiler-gcc.h para sa mga bersyon na mas mababa sa 4.6

Hanggang sa pagsisikap ng LLVM Clang para sa pagbuo ng pangunahing linya ng Linux x86_64 kernel, kasalukuyang may ilang stall sa mga pagsisikap, lalo na sa proyekto ng LLVMLinux - bagaman mayroong ilang gawain sa pagbuo ng kernel sa pamamagitan ng puwang ng ARM Linux kasama ang Clang.