Linux 4.19 -ydin vaatii nyt GCC 4.6: n rakentamisen vanhemman arkkitehtuurin kääntämisvirheiden vuoksi

Linux-Unix / Linux 4.19 -ydin vaatii nyt GCC 4.6: n rakentamisen vanhemman arkkitehtuurin kääntämisvirheiden vuoksi 1 minuutti luettu

Linux Kernel Organization, Inc.



Ytimellä työskenteleville Linux-kehittäjille julkaistava Linux 4.19 -ydin nostaa ytimen rakentamiseen vaadittavaa GCC-minimiversiota. Virallisessa Linux-ytimessä on lueteltu GCC 3.2 vähintään kääntäjän versio, jota tarvitaan ytimen rakentamiseen, mutta Linux-ydin 4.19 nostaa sen GCC 4.6: ksi.

Tämä johtuu siitä, että vanhojen GCC4-versioiden erilaiset arkkitehtuurit eivät ole kyenneet kääntämään Linux-ydintä puhtaasti, minkä vuoksi GCC 4.6 asetetaan minimiksi. Ydin tarkistaa myös nimenomaisesti GCC 4.6.0: n tai uudemman, ja jos sitä ei löydy, kääntäjä tekee virheen.

Tämä on hyödyllistä myös ytinkoodille, koska ytimen kehittäjät pystyivät poistamaan useita kymmeniä koodiriviä vanhemmille GCC-kiertotavoille, jotka oli tarkoitettu kääntäjävirheisiin ja käyttäytymiseroihin vanhemmissa kääntäjäversioissa.



Tämä muutos yhdistettiin juuri aikaisemmin tänään Git sitoutumisen kautta - ja GCC 4.6.0 julkaistiin vuonna 2011, joten näemme, onko GCC: llä päivityksiä myös tulevaisuudessa.



Tämän päivityksen muutosloki / sitoutuminen määrittelee periaatteessa, että muutos johtuu melkein kokonaan siitä, että GCC-kääntäjän vanhemmat versiot eivät pystyneet rakentamaan ydintä eri arkkitehtuureissa, kuten alla todettiin:

 Erilaisia ​​arkkitehtuureja ei voida rakentaa oikein gcc-kääntäjän vanhempien versioiden kanssa. Esimerkki Guenter Roeckista säikeessä [1]:>> Tiedostoon, joka sisältyy tiedostoon ./include/linux/mm.h:17:0,> from ./include/linux/pid_namespace.h:7,> from ./include /linux/ptrace.h:10,> arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: virhe: joustava taulukon jäsen muuten tyhjässä rakenteessa> > Tämä on vain esimerkki orcc: n gcc 4.5.1: stä. Olen myös nähnyt ongelman> gcc 4.4: ssä (unicore32: lle). Joten päivitä gcc: n vähimmäisvaatimus versioon 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Muut: - Päivitä dokumentaatio / process / changes.rst - Poista ja konsolidoi version testilohkot Compiler-gcc.h-versiossa alle 4.6-versioissa

LLVM Clang -ponnistelut linjan Linux x86_64 -ydinrakennuksen rakentamiseksi ovat tällä hetkellä jonkin verran pysähtyneitä, erityisesti LLVMLinux-projektissa - vaikka ydintä on rakennettu jonkin verran ARM Linux -tilan kautta Clangin kanssa.