Miért támogatott ennyi GCC verzió?

Címkék

A címben szereplő kérdés a Linux kernelre vonatkozik. Az LKML-n érdeklődött valaki, hogy miért kell a Linux kernelben aktívan támogatni a GCC fordítók ilyen széles választékát. Az egyik indok az volt, hogy azért, mert a korábbi fordítók sokkal gyorsabbak. Erre válaszként olyan kédések jöttek, hogy: ``Miért gond ez kernelfordításkor?'', ``Milyen gyakran fordítasz kernelt?''

Linus egyetértett abban, hogy az egyik ok valóban a sebesség probléma. Sok embernek fontos, hogy milyen gyorsan fordul el a kernel. De emellett más oka is van a korábbi fordítók támogatásának...Az ok az, hogy a GCC 3.x korai verziói nagyon rossz kódot generálnak, nagyon bugosak. Ahogy Linus elmondta, hosszú ideje csak egy dolog miatt érdemes gcc-t frissíteni, és ez a C++ támogatás. Az alap C támogatás szerinte minden egyes új gcc verzióban minden szempontból egyre rosszabb volt. Mint írja később javult a helyzet, de véleménye szerint a gcc 3.x nem igazán használható a sima C-hez egészen a 3.3 verzióig.

Bővebben a KernelTrap-on itt.

Hozzászólások

A Fedora Core 3 -ban meglepve fedeztem fel a gcc4.0.0 csomagot, ami még ki sem jött. :)

Nem széleskörű igény, de én pl. annak is tudnék örülni, ha le lehetne fordítani a kernelt gcc-től különböző (de ansi kompatibilis) fordítóval is. Gondolok itt pl. az Intel-féle icc-re ill. a Compaq-féle ccc-re, mert ahogy néztem őket, sok esetben gyorsabb kódot generálnak, mint a gcc.

Kisse offtopic, de megneztem Mozillaval azt a helyet, ahonnan ezt le lehet tolteni. A cim:

ftp://ftp.compaq.com/pub/products/C-CXX/linux/compaq_c/

Semmi erdekes nincs benne, kiveve a fajlok DATUM mezojet :-) A HP/Compaq/Digital mar Krisztus utan 101-ben kiadta a forditojat. Reszlet:

File: ccc-6.4.9.005-1.alpha.rpm 5617 KB 0101/05/11 13:51:00

No mindegy. (Amikor megneztem rendes, parancssori ftp klienssel is, akkor mar latszik, hogy valami nem OK, igy kezdi:

$ ftp ftp://ftp.compaq.com/pub/products/C-CXX/linux/compaq_c/

Connected to ftp.compaq.com.

220 Microsoft FTP Service

es igy folytatja az ominozus fajl istazasat:

05-11-01 12:51PM 5751246 ccc-6.4.9.005-1.alpha.rpm

Vagy fél éve kértem Compaq-éktól (ilyen 'Hobby+enthusiast license' néven adják), ccc-6.5.9.001-6 verziójút. A gond csak az, hogy a kernel eléggé gcc-specifikus. Egyébiránt főleg lebegőpontos ill. 64-bites műveleteknél jobb, mint a gcc, szóval a kernelnél nem lenne annyira számottevő, de szívesen megpróbáltam volna.

A TCC ( http://fabrice.bellard.free.fr/tcc/ [fabrice.bellard.free.fr]) már most is képes fordítani kernelt (egy kis patchelés után)

Emelett a gcc 2.95-nél 8x gyorsabban fordít. A fejlesztője csinált olyan bootloadert, hogy a bootolás közben realtime lefordítja a kernelt vele. Ez mindössze 15 másodpercig (!) tart egy 2.4-es P4-en a tcc-vel.

Egebkent az a szep az egeszben, hogy nem csak fordito, de platformfuggo is a dolog. A 2.95.3-as GCC peldaul PowerPC-n igen ocska, a 3.x fenyevekkel veri. Sot, a recent kernelek altalaban nem is fordulnak 2.95.3-al PPC-n. Sz'al jo a helyzet... Egyebkent C suxx, Pascal rulez. :D