GNU Compiler Collection

Fra Wikipedia, den frie encyklopedi
(Omdirigert fra GCC)
Hopp til: navigasjon, søk
GCC «GNU Compiler Collection»
GCC «GNU Compiler Collection»
Utvikler GNU-prosjektet
Utgitt 23. mai 1987
Nyeste versjon 6.1 (27. april 2016)
Operativsystem Unix og Unix-liknende
Type Kompilator
Lisens GPL
Nettsted gcc.gnu.org
«GCC» leder hit. For organisasjonen GCC se Golfrådet.

GNU Compiler Collection (GCC) er en samling kompilatorer for en rekke forskjellige programmeringsspråk. GCC er en del av GNU-prosjektet. Det er fri programvare som distribueres av Free Software Foundation under GNU General Public License og GNU Lesser General Public License, og er en nøkkelkomponent blant GNU-verktøykjeden. Det er standard-kompilatoren for fri programvare Unix-liknende operativsystemer, slik som Linux, men også for Apples Mac OS X.

GCC stod opprinnelig for GNU C Compiler og var en kompilator for programmeringsspråket C.

GCC 1.0 ble opprinnelig sluppet i 1987, og kompilatoren ble utvidet til å kompilere C++ i desember i det samme året.[1] Senere har det blitt utviklet grensesnitt for blant andre Fortran, Pascal, Objective-C, Java, og Ada.[2]

Programmeringsspråk[rediger | rediger kilde]

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[rediger | rediger kilde]

GCC versjon 4.1 kan kompilere kode for å kjøre på følgende prosessorer:

Andre mikroprosessorer som tidligere ble støttet i standard-utgaven inkluderer:

I tillegg har følgende prosessorer vært støttet av GCC versjoner som har blitt vedlikeholdt separat fra FSF versjonen:

Historikk[rediger | rediger kilde]

Arbeidet med GNU Hurd[rediger | rediger kilde]

Se også: GNU Hurd og Minix

GNU C Compiler oppstod under arbeidet med GNU Hurd, en fri og åpen operativsystemkjerne som er implementert som en mikrokjerne.[3] 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.[4]

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.[5]

GNU C Compiler[rediger | rediger kilde]

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)[rediger | rediger kilde]

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 Compiler Collection (GCC)[rediger | rediger kilde]

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 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[rediger | rediger kilde]

GCC 3.0[rediger | rediger kilde]

GCC 3.1[rediger | rediger kilde]

I GCC 3.1 opphørte støtten for følgende mikroprosessorer:

GCC 3.2[rediger | rediger kilde]

GCC 3.3[rediger | rediger kilde]

I GCC 3.3 opphørte støtten for følgende mikroprosessorer:

GCC 3.4[rediger | rediger kilde]

I GCC 3.4 opphørte støtten for følgende mikroprosessorer:

GCC 4.0[rediger | rediger kilde]

I GCC 4.0 fikk alle programmeringsspråkene en felles parser eller syntaktisk analysator, kalt tree SSA (Static Single Assignment).[6] 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:

I GCC 4.0 opphørte også støtten for SPARClite baserte systemer og 32-bit OpenBSD på SPARC.

GCC 4.1[rediger | rediger kilde]

GCC 4.2[rediger | rediger kilde]

GCC 4.3[rediger | rediger kilde]

GCC 4.4[rediger | rediger kilde]

GCC 4.5[rediger | rediger kilde]

Versjonshistorikk[rediger | rediger kilde]

Versjon Lansert Merknader
0.9 22. mars 1987 Første betautgave
1.0 23. mai 1987
1.1 24. mai 1987
1.2 1. juni 1987
1.3 10. juni 1987
1.4 13. juni 1987
1.5 18. juni 1987
1.6 2. juli 1987
1.7 21. juli 1987
1.8 10. august 1987
1.9 18. august 1987
1.10 22. august 1987
1.11 5. september 1987
1.12 3. oktober 1987
1.13 12. oktober 1987
1.14 6. november 1987
1.15 28. november 1987
G++ 1.15.3 18. desember 1987 C++ kompilator
1.16 19. desember 1987
1.17 9. januar 1988
1.18 4. februar 1988
1.19 29. mars 1988
1.20 19. april 1988
1.21 1. mai 1988
1.22 22. mai 1988
1.23 26. juni 1988
1.24 2. juli 1988
1.25 3. august 1988
1.26 18. august 1988
1.27 5. september 1988
1.28 14. september 1988
1.29 6. oktober 1988
1.30 13. oktober 1988
1.31 19. november 1988
1.32 21. desember 1988
1.33 1. februar 1989
1.34 23. februar 1989
1.35 26. april 1989
1.36 24. september 1989
G++ 1.36.3 16. januar 1990 C++ kompilator
G++ 1.36.4 30. januar 1990 C++ kompilator
1.37 11. februar 1990
1.37.1 21. februar 1990
G++ 1.37.0 28. februar 1990 C++ kompilator
G++ 1.37.1 1. mars 1990 C++ kompilator
1.38 21. desember 1990
1.39 16. januar 1991
G++ 1.39.1 4. mai 1991 C++ kompilator
1.40 1. juni 1991
G++ 1.40.3 19. oktober 1991 C++ kompilator
2.0 22. februar 1992
2.1 24. mars 1992
2.2 8. juni 1992
2.2.1 9. juni 1992
2.2.2 14. juni 1992
G++ 1.41.0 13. juli 1992 C++ kompilator
1.41 27. august 1992
1.42 20. september 1992
G++ 1.42.0 20. september 1992 C++ kompilator
2.3 31. oktober 1992
2.3.1 1. november 1992
2.3.2 27. november 1992
2.3.3 26. desember 1992
2.4.0 17. mai 1993
2.4.1 26. mai 1993
2.4.2 31. mai 1993
2.4.3 1. juni 1993
2.4.4 19. juni 1993
2.4.5 20. juni 1993
2.5.0 22. oktober 1993
2.5.1 31. oktober 1993
2.5.2 1. november 1993
2.5.3 11. november 1993
2.5.4 16. november 1993
2.5.5 27. november 1993
2.5.6 3. desember 1993
2.5.7 12. desember 1993
2.5.8 24. januar 1994
2.6.0 14. juli 1994
2.6.1 1. november 1994
2.6.2 12. november 1994
2.6.3 30. november 1994
2.7.0 16. juni 1995
2.7.1 12. november 1995
2.7.2 26. november 1995
2.7.2.1 29. juni 1996
2.7.2.2 29. januar 1997
2.7.2.3 22. august 1997
EGSC 1.0 3. desember 1997 Versjon 2.90.21 av GNU C
EGSC 1.0.1 6. januar 1998 Versjon 2.90.23 av GNU C
2.8.0 7. januar 1998
2.8.1 2. mars 1998
EGSC 1.0.2 16. mars 1998 Versjon 2.90.27 av GNU C
EGSC 1.0.3 15. mai 1998 Versjon 2.90.29 av GNU C. En mindre oppdatering, lansert for å løse problemer som ble rapportert av Red Hat på Red Hat Linux 5.1.
EGSC 1.1 3. september 1998 Versjon 2.91.57 av GNU C
EGSC 1.1.1 1. desember 1998 Versjon 2.91.60 av GNU C
EGSC 1.1.2 15. mars 1999 Versjon 2.91.66 av GNU C
2.95 31. juli 1999 Uvidet støtte for standardene C99 og ISO C++98,[7] bedre støtte for Fortran 77.[7][8] Tilføyd programmeringsspråkene Java og CHILL.[7]
Av signifikante nyheter kan nevnes bedre støtte for komplekse datatyper, eksperimentell internasjonal støtte, støtte for tegn bestående av flere bytes, evnen til å dumpe kontrollflytgrafens (CFG) informasjon og vise den med verktøyet VCG (Visualization of Compiler Graphs), og en ny og raskere metode som standard for å fikse feil i headerfiler fra tredjeparts leverandører.[7]
GCC 2.95 tilføyde støtte for operativsystemene OpenBSD og FreeBSD, Linux for ARM-arkitekturen, samt programmene UWIN og Interix for interoperabilitet mellom Unix og Microsoft Windows.[7] Tilføyd støtte for sanntidsoperativsystemet vxWorks, inkludert tråder for VxWorks.[7]
Omskriving av kompilatorenes backend for å gi full støtte for 64-biter UltraSPARC.[7][9] Tilføyd støtte for 32-biter HyperSPARC og 32-biter Sparclite. Diverse optimaliseringer for 64-biter mikroprosessoren PA-8000 (PA-RISC 2.0).[7] Diverse optimaliseringer for IA-32, deriblant AMD K6.[7] Tilføyd støtte for 64-biter mikroprosessoren Alpha 21264 (EV6),[7] 32-biter mikroprosessorene PowerPC 750, PowerPC 401, PowerPC 403 og PowerPC 603,[7] de digitale signalprosessorene TMS320C3x og TMS320C4x fra Texas Instruments,[7] 32-biter RISC-prosessorene SuperH4,[7] StrongARM 110 og ARM9.[7] Forskjellige forandringer i porteringen til RISC-arkitekturen MIPS, for å unngå assembler-makroer,[7] ulike optimaliseringer for RISC-prosessoren Intel i960,[7] og en omskriving av porteringen til NS320xx fra National Semiconductor.[7]
2.95.1 19. august 1999 Signatur-utvidelsene i syntaksen til G++ ble definert som foreldet, og ble fjernet i GCC 3.0.[7] GCC 2.95.1 hadde færre arkaiske G ++ konstruksjoner enn GCC 2.95.[7]
2.95.2 27. oktober 1999 Tilføyde makroen Define __STDC_EXT__ for HP-UX konfigurasjoner.[7] Tilføyde feilsøkingsdataformatet STABS i stedet for formatet DWARF1Solaris versjonene 2.4, 2.5, 2.6 og 7 på x86.[7] Tilføyde C++ kompatible include filer for Linux for ARM.[7]
2.95.2.1 10. desember 2000 Feilrettinger.[7]
2.95.3 16. mars 2001
3.0 18. juni 2001
3.0.1 20. august 2001
3.0.2 25. oktober 2001
3.0.3 20. desember 2001
3.0.4 21. februar 2002
3.1 15. mai 2002
3.1.1 26. juli 2002
3.2 14. august 2002
3.2.1 21. november 2002
3.2.2 5. februar 2003
3.2.3 25. april 2003
3.3 14. mai 2003
3.3.1 8. august 2003
3.3.2 17. oktober 2003
3.3.3 14. februar 2004
3.4.0 18. april 2004
3.3.4 31. mai 2004
3.4.1 1. juli 2004
3.4.2 6. september 2004
3.3.5 30. september 2004
3.4.3 4. november 2004
4.0.0 20. april 2005
3.3.6 3. mai 2005
3.4.4 18. mai 2005
4.0.1 7. juli 2005
4.0.2 28. september 2005
3.4.5 30. november 2005
4.1.0 28. februar 2006
3.4.6 6. mars 2006
4.0.3 10. mars 2006
4.1.1 24. mai 2006
4.0.4 31. januar 2007
4.1.2 13. februar 2007
4.2.0 13. mai 2007
4.2.1 18. juli 2007
4.2.2 7. oktober 2007
4.2.3 1. februar 2008
4.3.0 5. mars 2008
4.2.4 19. mai 2008
4.3.1 6. juni 2008
4.3.2 27. august 2008
4.3.3 24. januar 2009
4.4.0 21. april 2009
4.4.1 22. juli 2009 83 feilrettinger
4.3.4 4. august 2009
4.4.2 5. oktober 2010 20 feilrettinger
4.4.3 21. januar 2010
4.5.0 14. april 2010 Støtten for IRIX før versjon 6.5, Solaris 7 og Tru64 UNIX eldre enn V5.1 opphørt. Støtten for de første versjonene av mikroprosessoren POWER1 (RIOS1 og RIOS2) opphørt.
4.4.4 29. april 2010
4.3.5 22. mai 2010
4.5.1 31. juli 2010
4.4.5 1. oktober 2010
4.5.2 16. desember 2010
4.6.0 25. mars 2011 Støtten for Interix, Netware for i386, ABI for 32-bit RISC-prosessoren M·CORE (M·CORE PE), SymbianOS, GNU Hurd for Alpha/PowerPC og μClinux for Motorola 68000 opphørt. Støtten for Argonaut ARC, National Semiconductor CRX, Motorola 68HC11 og 68HC12 og Sunplus S+core opphørt.
4.4.6 16. april 2011
4.5.3 28. april 2011
4.3.6 27. juni 2011
4.6.1 27. juni 2011
4.6.2 26. oktober 2011
4.6.3 1. mars 2012
4.4.7 13. mars 2012
4.7.0 22. mars 2012 Støtten for IRIX 6.5, MIPS OpenBSD, Solaris 8 og Tru64 UNIX V5.1 opphørt.
4.7.1 14. juni 2012
4.5.4 2. juli 2012
4.7.2 20. september 2012
4.8.0 22. mars 2013
4.7.3 11. april 2013
4.6.4 12. april 2013
4.8.1 31. mai 2013 Støtte for C++11 ref-qualifiers tilføyd. Den første kompilator til å implementere alle de større språklige egenskaper i C++11 standarden.
4.8.2 16. oktober 2013
4.9.0 22. april 2014 Støtten for Solaris 9 opphørt. Tilføyd støtte for 512-biter SIMD-instruksjonssett AVX-512 på mikroprosessoren Intel Xeon Phi.
4.8.3 22. mai 2014
4.9.1 16. juli 2014 OpenMP 4.0 for Fortran tilføyd. Støtte i Fortran for IEEE iboende moduler som spesifisert i standardene Fortran-2003 og Fortran-2008.
4.9.2 30. oktober 2014 Støtte for Cilk Plus ble tilføyd GCC.
4.8.4 19. desember 2014 GCC kan nå bli bygd som et delt bibliotek hvor andre interpretere og kompilatorer kan foreta Just-in-time compilation. Bidrag av Red Hat.
5.1 22. april 2015 std=gnu89 blir erstattet av std=gnu11 (C++11 med Gnu-utvidelser) som standard. Støtte for C++14 og delvis støtte for C++17. Støtte for DragonFly BSD, FreeBSD for ARM og VxWorks MILS (Multiple Independent Levels of Security) for PowerPC. Støtte for arkitekturen VISIUMcore og MIPS Release 6 ble tilføyd. Tilføyd støtte for Intel MPXSkylake-arkitekturen. Tilføyd støtte for Intel Xeon Skylake utvidelser til SIMD-instruksjonssettet AVX-512.
4.8.5 23. juni 2015
4.9.3 26. juni 2015
5.2 16. juli 2015
5.3 4. desember 2015
6.1 27. april 2016

Referanser[rediger | rediger kilde]

  1. ^ «GCC Releases». GNU Project. Besøkt 24. april 2009. 
  2. ^ «Programming Languages Supported by GCC». GNU Project. Besøkt 24. april 2009. 
  3. ^ Free Software Foundation, Inc.: What Is the GNU Hurd?, 2010
  4. ^ Holmevik 2012, side 69-71
  5. ^ Hagen 2006
  6. ^ Proceedings of the 2003 GCC Developers Summit (sidene 171-193)
  7. ^ a b c d e f g h i j k l m n o p q r s t u v w Free Software Foundation, Inc: GCC 2.95 New Features, 31. juli 1999
  8. ^ 6 News About GNU Fortran
  9. ^ Free Software Foundation, Inc: SPARC Backend Rewrite. 31. juli 1999

Se også[rediger | rediger kilde]

Eksterne lenker[rediger | rediger kilde]

Litteratur[rediger | rediger kilde]