GCC

GNU Compiler Collection (yleensä GCC) on GNU-projektin kääntäjien kokoelma. Se on Free Software Foundationin vapaata ohjelmistoa, ja julkaistu GNU GPL:n ja osin LGPL:n alaisuudessa. GCC on GNUn kehitysympäristön tärkein osa ja vapaiden Unixin kaltaisten käyttöjärjestelmien vakiokääntäjä ja usein hyödynnetty myös kaupallisten kehitysympäristöjen kanssa.

GCC:n alkuperäinen nimi oli GNU C Compiler ja se osasi kääntää vain C:tä. Nyttemmin GCC osaa kääntää myös C++:a, Fortrania, Adaa, Objective-C:tä, Go:ta ja D:tä. Java-kääntäjä on poistettu GCC:stä versiosta 7 alkaen. Varhainen tuki Rust-kielelle on lisätty joulukuussa 2022, mutta tuki ei ole vielä täysin valmis GCC version 13 julkaisuun mennessä. Modula-2-kielen tuki on lisätty kehitysversioon joulukuussa 2022.

GCC:tä voidaan käyttää ristiinkääntäjänä, jolloin käännösympäristönä voi olla eri alusta kuin varsinainen kohdealusta. Kohde voi olla esimerkiksi pelikonsoli (kuten PlayStation 2).

Historia 
Richard Stallman aloitti GCC:n kehityksen. GCC oli aluksi kirjoitettu Pastel-kielellä, joka oli Pascal-kielen murre. Jotta kääntäjä saatiin kevyemmäksi ja helpommin käännettäväksi Len Tower ja Stallman kirjoittivat sen uudelleen C-kielellä. Ensimmäinen beetaversio julkaistiin 22. maaliskuuta 1987 ja 1.0 julkaistiin 23. toukokuuta. Ensimmäinen C++:aa kääntänyt versio, 1.15.3, julkaistiin 18. joulukuuta samana vuonna.

Vuonna 1997 ryhmä kehittäjiä, jotka kyllästyivät GCC:n hitaaseen kehitykseen ja suljettuun kehitysryhmään, muodosti projektin nimeltä EGCS (Experimental/Enhanced GNU Compiler System), joka otti mukaan ominaisuuksia eräistä GCC:n epävirallisista muunnoksista, kuten Fortran 77 -kääntäjän, IBM:n kehittämän Haifa-optimoijan ja Pentium-optimoinnin. Myöhemmin Free Software Foundation lopetti oman GCC 2.x:n kehityksensä ja EGCS:sta tuli virallinen GCC huhtikuussa 1999.

GCC:n versio 4.2.1 oli viimeinen, joka julkaistiin GPL-lisenssin versiolla 2. Myöhemmät versiot käyttävät lisenssin versiota 3.

GCC:n toteutusta on muutettu C-kielestä C++:n alijoukolle: tavoitteena on säilyttää yhteensopivuus edeltävään versioon sekä mahdollisuus kääntää GCC muilla kääntäjillä.

Versio 7.1 lisää tuen C++17-standardin kaikille ominaisuuksille.

Kielituki 
GCC sisältää tuen C-kielen eri standardiversioille sekä GNU-laajennuksille kieleen: versiossa 12.2.0 oletuksena käytössä on gnu17-versio (C18 GNU-laajennuksilla). C90-versio on tuettu teknisien korjausten kanssa (Technical Corrigenda, 1994 ja 1996) ja vuonna 1995 julkaistu laajennettu versio (Amendment 1). C99-versio on tuettu teknisien korjauksien kanssa (2001, 2004 ja 2007). C11-versio on tuettu ja C17-version korjauksien kanssa.

C++-kielen versiot C++98, C++11, C++14, C++17 ja C++20 ovat tuettuja.

Objective-C versio 1.0 on tuettu, jonka lisäksi joukko 2.0:n ominaisuuksia on tuettu. Lisäksi Objective-C++ on tuettu.

Go-kielen Go 1 -versio on tuettu GCC:n versiosta 4.7.1 lähtien.

GCC tukee D 2.0 -kieltä.

Arkkitehtuurit 
GCC:n kohdesuorittimet versiosta 4.3 lähtien:

 Alpha
 ARM
 AVR
 Blackfin
 Epiphany (GCC 4.8)
 H8/300
 HC12
 IA-32 (x86)
 IA-64 (Intel Itanium)
 MIPS
 Motorola 68000 -sarja
 PA-RISC
 PDP-11
 PowerPC
 R8C / M16C / M32C
 SPARC
 SPU
 SuperH
 System/390 / zSeries
 VAX
 x86-64

Vähemmän tunnettuja suorittimia joita tuetaan vakiojulkaisussa:

 68HC11
 AMD Am29000 (A29K)
 CR16
 C6x
 D30V
 DSP16xx
 ETRAX CRIS
 FR-30
 FR-V
 Intel i960
 IP2000
 M32R
 MCORE
 MIL-STD-1750A
 MMIX
 MN10200
 MN10300
 Motorola 88000
 NS32K
 IBM ROMP
 RL78
 Stormy16
 V850
 Xtensa

Lisää suorittimia tuetaan versioissa, joita ylläpidetään erillään GNU-projektin versiosta:

 Cortus APS3
 ARC
 AVR32
 C166 ja C167
 D10V
 EISC
 eSi-RISC
 Hexagon
 LatticeMico32
 LatticeMico8
 MeP
 MicroBlaze
 Motorola 6809
 MSP430
 NEC SX
 Nios II ja Nios
 OpenRISC
 PDP-10
 PIC24/dsPIC
 PIC32
 Propeller
 RISC-V
 Saturn (HP48XGCC)
 System/370
 TIGCC (m68k-muunnos)
 TriCore
 Z8000
 ZPU

Lähteet

Aiheesta muualla
 https://gcc.gnu.org/ – GCC:n kotisivu

GNU-projektin ohjelmat
Ohjelmointikielen kääntäjät
C-kielen kääntäjät