«GCC» leder hit. For organisasjonen GCC se Golfrådet.
GNU Compiler Collection (GCC) er en samling frie og åpne kompilatorer for en rekke forskjellige programmeringsspråk. GCC er en nøkkelkomponent i GNU-verktøysettet og blir utviklet av Free Software Foundation (FSF). GCC har spilt en viktig rolle i utviklingen av fri og åpen programvare, både som programmeringsverktøy og som eksempel. GCC distribueres under GNU General Public License (GPL) versjon 3+ med de unntak som er nevnt i GCC Runtime Library Exception.
GCC er en del av GNU-prosjektet, og er offisielle kompilatorer for GNU-operativsystemet GNU Hurd/GNU Mach. GCC anvendes i dag også som standard kompilatorer av mange andre Unix-liknende operativsystemer, herav Linux og frie avarter av BSD. FreeBSD benyttet i utgangspunktet GCC, men gikk over til Clang/LLVM i 2014. Også Apples macOS benytter i dag primært LLVM, men støtter også GCC. GCC er også tilgjengelig for ulike avarter av Microsoft Windows og andre operativsystemer, og kan kompilere kode for Android og iOS.
GCC ble lansert 23. mai 1987 som en kompilator for programmeringsspråket C, og forkortelsen stod da for GNU C Compiler. Den 18. desember 1987 lanserte FSF en C++-kompilator under navnet GNU G++. Da GCC 3.0 ble lansert den 18. juni 2003, ble GNU C Compiler og GNU G++ slått sammen, slik at GNU C Compiler også er en C++ kompilator. GNU C Compiler benytter C-standardbiblioteket GNU C Library (gclib); forut for GCC 3.0 fantes det også et eget standardbibliotek for C++ kalt libg++. Dette vedlikeholdes ikke lenger, og er blitt slått sammen med gclib.
Den 3. desember 1997 ble GCC en del av Enhanced GNU Compiler Systems (EGCS), et samarbeidsprosjekt som bestod av de fire kompilatorene GNU C, GNU C++, GNU Objective-C og GNU Fortran-77. Den 31. juli 1999 ble denne omdøpt til GNU Compiler Collection og utvidet med GNU Java og GNU CHILL. Verken CHILL eller Java er en del av GCC.
GCC 1.0 ble utvidet til å kompilere C++ i desember 1987. Senere har det blitt utviklet grensesnitt for blant andre Pascal og Ada.
Programmeringsspråk GCC versjon 4.3 inneholder støtte for C, C++ (G++), Java (GCJ), Ada (GNAT), Objective-C, Objective-C++ og Fortran-95 (GFortran). Det er også tilgjengelig støtte for Modula-2, Modula-3, Pascal, PL/I, D, Mercury, VHDL gjennom utvidelser.
Arkitekturer GCC versjon 4.1 kan kompilere kode for å kjøre på følgende prosessorer:
Alpha ARM Atmel AVR Blackfin HC12 H8/300 IA-32 (x86) x86-64 Intel Itanium MorphoSys Motorola 68000 MIPS PA-RISC PDP-11 PowerPC R8C/M16C/M32C System/390/zSeries SuperH SPARC VAX
Andre mikroprosessorer som tidligere ble støttet i standard-utgaven inkluderer:
A29K ARC C4x ETRAX CRIS D30V DSP16xx FR-30 FR-V Intel i860 Intel i960 IP2000 M32R 68HC11 MCORE MMIX MN10200 MN10300 Motorola 88000 NS32K ROMP Stormy16 V850 Xtensa
I tillegg har følgende prosessorer vært støttet av GCC versjoner som har blitt vedlikeholdt separat fra FSF versjonen:
D10V MicroBlaze Nios II and Nios PDP-10 MSP430 Z8000
Operativsystemer OperativsystemGCCSunOS 3.5 1.18 – 3.4.0SunOS 4.0 1.32 – 3.4.0Solaris 1.1.1 1.38 – 3.4.0Solaris 1.1.2 2.0 – 3.4.0Solaris 1.1.3 2.5.6 – 3.4.0Solaris 1.1.4 2.6.2 – 3.4.0Solaris 2.02.2 – 4.3.0Solaris 2.12.3.3 – 4.3.0Solaris 2.22.4.0 – 4.3.0Solaris 2.32.5.2 – 4.3.0Solaris 2.42.6.2 – 4.3.0Solaris 2.52.7.1 – 4.3.0Solaris 2.62.7.2.3 – 4.3.0Solaris 7EGSC 1.1 – 4.5.0Solaris 82.95.2 – 4.7.0Solaris 93.1.1 – 4.9.0Solaris 104.0.0 – 9.1Solaris 114.6.3 –
Historikk Arbeidet med GNU Hurd
GNU C Compiler oppstod under arbeidet med GNU Hurd, en fri og åpen operativsystemkjerne som er implementert som en mikrokjerne.Free Software Foundation, Inc.: What Is the GNU Hurd?, 2010 Arbeidet med kjernen begynte 5. januar 1984, da Richard Stallman sluttet i jobben ved Bell Laboratories slik at de ikke kunne hevde eiendomsrett til eller blande seg opp i distribueringen av GNU-komponentene.
GNU Hurd var i begynnelsen avhengig av mikrokjernen Mach fra Carnegie Mellon University under oppstart, og Stallman arbeidet med å få GNU Hurd til å starte opp på egen hånd. Under dette arbeidet tok han kontakt med Andrew S. Tanenbaum ved Vrije Universiteit i Amsterdam. Tanenbaum var opphavsmannen til MINIX, en annen Unix-lignende mikrokjerne som ble lansert i 1987.
Stallmann ba om tillatelse til å benytte Amsterdam Compiler Kit i forbindelse med GNU Hurd. Da Tanenbaum forklarte at Vrije Universiteit var fritt, men ikke kompilatoren, bestemte Stallman seg for å lage sin egen kompilator.
GNU C Compiler GCC var opprinnelig navnet på GNU C kompilatoren. Det er en fri C kompilator, med åpen kildekode, for UNIX og Unix-liknende systemer.
De første GNU C kompilatorene fulgte de facto standardene, som ble definert av Kernighan & Richie, sammen med GNUs egne utvidelser.
Idag følger GNU C standard-biblioteket GNU C Library alle relevante standarder: ISO C99, POSIX.1c, POSIX.1j, POSIX.1d, UNIX-98 og the Single UNIX Specification. GNU C har også et av de mest komplette grensesnitt for internasjonalisering.
GNU C++ følger standardene ANSI C++ 2.1, ISO C++ 1998 standarden, og har også eksperimentell støtte for den kommende ISO C++ 0x standarden, gjennom standardbiblioteket GNU Libstdc++, som ble integrert i GNU Compiler Collection i versjon 3.1.
EGCS (Enhanced GNU Compiler Systems) EGCS (Enhanced GNU Compiler Systems) var et samarbeidsprosjekt for å påskynde utviklingen av GNU kompilatorer. Viktige målsetninger var: Støtte for nye mikroprosessorer og operativsystemer Portabilitet til Microsoft ® Windows™ 32-bit operativsystemer Større samsvar mellom GNU implementasjonen av C og C++ og standardene ISO C99 og ANSI C++ 2.1 Større optimalisering Forbedret debugging
EGCS bestod av fire kompilatorer: GNU C GNU C++ GNU Objective-C GNU Fortran-77
GNU Compiler Collection (GCC) I april 1999 ble styrings-komitéen til EGCS utnevnt av Free Software Foundation som den offisielle vedlikeholder av GCC. Samtidig ble GCC omdøpt fra å være en forkortelse for «GNU C Compiler» til å bli en forkortelse for «GNU Compiler Collection».
Kompilatorene ble etter dette også portable til Microsoft Windows™ 64-bit operativsystemer.
GCC 2.95 bestod av følgende kompilatorer: GNU C GNU C++ GNU Objective-C GNU Fortran-77 GNU Java GNU CHILL
GNU CHILL ble fjernet fra GCC versjon 3.0, og mange Linux-distribusjoner, deriblant Red Hat Fedora og Mandriva Linux, begynte å levere GCC 2.95, i tillegg til senere versjoner av GCC, for å gi brukerne tilgang til programmeringsspråket CHILL.
GCC 3.1 tilføyde GNU Ada-95. I GCC 4.0 ble GNU Fortran-77 kompilatoren erstattet av en mer oppdatert versjon som fulgte Fortran-95 standarden. GCC 4.1 tilføyde det nye programmeringsspråket GNU Objekt C++.
GCC 2.95
GCC 3.0
GCC 3.1 I GCC 3.1 opphørte støtten for følgende mikroprosessorer:
MIL-STD-1750A AMD Am29000 Convex Clipper Elxsi Intel i860 Sun picoJava Western Electric 32000
GCC 3.2
GCC 3.3 I GCC 3.3 opphørte støtten for følgende mikroprosessorer:
Matsushita MN10200 Motorola 88000 IBM ROMP
GCC 3.4 I GCC 3.4 opphørte støtten for følgende mikroprosessorer:
Mitsubishi D30V AT&T DSP1600 AT&T DSP1610 Intel i960
GCC 4.0 I GCC 4.0 fikk alle programmeringsspråkene en felles parser eller syntaktisk analysator, kalt tree SSA (Static Single Assignment).Proceedings of the 2003 GCC Developers Summit (sidene 171-193) Kode fra ulike språk konverteres til en felles form kalt Generic, og deretter til en GIMPLE-parser (en fri utgave av SIMPLE fra the McCat project ved McGill University), og deretter optimalisert gjennom RTL-optimalisering. Dette gjorde C++ koden 25 % raskere.
Fortran-77 erstattet av Fortran-95 Ada-kompilatoren uvidet med deler av Ada-2005 standarden Generering av raskere C++ kode (25 % raskere enn versjon 3.4 uten optimalisering). Støtte for NEC VR4130 serien (MIPS) og MIPS-3D ASE instruksjonssett. Utvidet støtte for Sun's Visual Instruction Set (VIS) på UltraSPARC.
Mikroprosessorer som ikke lenger ble støttet: Ubicom IP2022 National Semiconductor 32000 Texas Instruments TMS320C(34)
I GCC 4.0 opphørte også støtten for SPARClite baserte systemer og 32-bit OpenBSD på SPARC.
GCC 4.1
GCC 4.2
GCC 4.3
GCC 4.4
GCC 4.5
Versjonshistorikk