Movatterモバイル変換


[0]ホーム

URL:


Hopp til innhold
Wikipedia
Søk

GNU Compiler Collection

Fra Wikipedia, den frie encyklopedi
«GCC»leder hit. For organisasjonen GCC seGolfrådet.
GNU Compiler Collection
Utvikler(e)GNU-prosjektet
Utgitt 23. mai 1987[1]
Nyeste versjon14.3(23. mai 2025)[2]
Kodelagerhttps://gcc.gnu.org/git/gcc.git
PlattformMultiplattform
OperativsystemGNU/Linux BSDmacOSMicrosoft WindowsUnix-liknendeMINIX 3
Skrevet iC++,C
Støtter skriptC,C++,Objective-C,Fortran,Programmeringsspråket Ada,Go,D
LisensGPLv3
Nettstedgcc.gnu. (en)

GNU Compiler Collection (GCC) er en samlingfrie og åpnekompilatorer for en rekke forskjelligeprogrammeringsspråk. GCC er en nøkkelkomponent iGNU-verktøysettet og blir utviklet avFree Software Foundation (FSF). GCC har spilt en viktig rolle i utviklingen av fri og åpen programvare, både somprogrammeringsverktøy og som eksempel. GCC distribueres underGNU General Public License (GPL) versjon 3+ med de unntak som er nevnt iGCC Runtime Library Exception.

GCC er en del avGNU-prosjektet, og er offisielle kompilatorer for GNU-operativsystemetGNU Hurd/GNU Mach. GCC anvendes i dag også som standard kompilatorer av mange andreUnix-liknende operativsystemer, heravLinux og frie avarter avBSD.FreeBSD benyttet i utgangspunktet GCC, men gikk over tilClang/LLVM i 2014. OgsåApplesmacOS benytter i dag primært LLVM, men støtter også GCC. GCC er også tilgjengelig for ulike avarter avMicrosoft Windows og andre operativsystemer, og kan kompilere kode forAndroid ogiOS.

GCC ble lansert 23. mai 1987 som en kompilator forprogrammeringsspråketC, og forkortelsen stod da forGNU C Compiler. Den 18. desember 1987 lanserte FSF enC++-kompilator under navnetGNU 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 benytterC-standardbiblioteketGNU C Library (gclib); forut for GCC 3.0 fantes det også et eget standardbibliotek for C++ kaltlibg++. Dette vedlikeholdes ikke lenger, og er blitt slått sammen medgclib.

Den 3. desember 1997 ble GCC en del avEnhanced GNU Compiler Systems (EGCS), et samarbeidsprosjekt som bestod av de fire kompilatorene GNU C, GNU C++, GNUObjective-C og GNUFortran-77. Den 31. juli 1999 ble denne omdøpt tilGNU Compiler Collection og utvidet med GNUJava og GNUCHILL. Verken CHILL eller Java er en del av GCC.


GCC 1.0 ble utvidet til å kompilereC++ i desember 1987.[3]Senere har det blitt utviklet grensesnitt for blant andrePascal ogAda.[4]

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 forModula-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:

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:

Operativsystemer

OperativsystemGCC
SunOS 3.51.18 – 3.4.0
SunOS 4.01.32 – 3.4.0
Solaris 1.1.11.38 – 3.4.0
Solaris 1.1.22.0 – 3.4.0
Solaris 1.1.32.5.6 – 3.4.0
Solaris 1.1.42.6.2 – 3.4.0
Solaris 2.02.2 – 4.3.0
Solaris 2.12.3.3 – 4.3.0
Solaris 2.22.4.0 – 4.3.0
Solaris 2.32.5.2 – 4.3.0
Solaris 2.42.6.2 – 4.3.0
Solaris 2.52.7.1 – 4.3.0
Solaris 2.62.7.2.3 – 4.3.0
Solaris 7EGSC 1.1 – 4.5.0
Solaris 82.95.2 – 4.7.0
Solaris 93.1.1 – 4.9.0
Solaris 104.0.0 – 9.1
Solaris 114.6.3 –

Historikk

Arbeidet med GNU Hurd

Se også:GNU Hurd ogMinix

GNU C Compiler oppstod under arbeidet medGNU Hurd, enfri og åpenoperativsystemkjerne som er implementert som enmikrokjerne.[5] Arbeidet med kjernen begynte 5. januar 1984, daRichard Stallman sluttet i jobben vedBell Laboratories slik at de ikke kunne hevde eiendomsrett til eller blande seg opp i distribueringen av GNU-komponentene.[6]

GNU Hurd var i begynnelsen avhengig av mikrokjernenMach fraCarnegie Mellon University underoppstart, og Stallman arbeidet med å få GNU Hurd til å starte opp på egen hånd. Under dette arbeidet tok han kontakt medAndrew S. Tanenbaum vedVrije Universiteit iAmsterdam. Tanenbaum var opphavsmannen tilMINIX, en annenUnix-lignende mikrokjerne som ble lansert i 1987.

Stallmann ba om tillatelse til å benytteAmsterdam 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.[7]

GNU C Compiler

GCC var opprinnelig navnet på GNU C kompilatoren. Det er en fri C kompilator, med åpen kildekode, forUNIX ogUnix-liknende systemer.

De første GNU C kompilatorene fulgtede facto standardene, som ble definert av Kernighan & Richie, sammen med GNUs egne utvidelser.

Idag følger GNU C standard-biblioteketGNU C Library alle relevante standarder: ISO C99, POSIX.1c, POSIX.1j, POSIX.1d, UNIX-98 ogthe 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 standardbiblioteketGNU 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 Compiler Collection (GCC)

Iapril1999 ble styrings-komitéen til EGCS utnevnt avFree 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-bitoperativsystemer.

GCC 2.95 bestod av følgende kompilatorer:

GNU CHILL ble fjernet fra GCC versjon 3.0, og mange Linux-distribusjoner, deriblantRed Hat Fedora ogMandriva 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øydeGNU Ada-95. I GCC 4.0 ble GNUFortran-77 kompilatoren erstattet av en mer oppdatert versjon som fulgteFortran-95 standarden. GCC 4.1 tilføyde det nye programmeringsspråketGNU Objekt C++.

GCC 2.95

GCC 3.0

GCC 3.1

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

GCC 3.2

GCC 3.3

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

GCC 3.4

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

GCC 4.0

I GCC 4.0 fikk alle programmeringsspråkene en felles parser eller syntaktisk analysator, kalttree SSA (Static Single Assignment).[8] Kode fra ulike språk konverteres til en felles form kaltGeneric, og deretter til en GIMPLE-parser (en fri utgave av SIMPLE frathe 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

GCC 4.2

GCC 4.3

GCC 4.4

GCC 4.5

Versjonshistorikk

VersjonLansertMerknader
0.922. mars 1987Første betautgave
1.023. mai 1987
1.124. mai 1987
1.21. juni 1987
1.310. juni 1987
1.413. juni 1987
1.518. juni 1987
1.62. juli 1987
1.721. juli 1987
1.810. august 1987
1.918. august 1987
1.1022. august 1987
1.115. september 1987
1.123. oktober 1987
1.1312. oktober 1987
1.146. november 1987
1.1528. november 1987
G++ 1.15.318. desember 1987C++ kompilator
1.1619. desember 1987
1.179. januar 1988
1.184. februar 1988
1.1929. mars 1988
1.2019. april 1988
1.211. mai 1988
1.2222. mai 1988
1.2326. juni 1988
1.242. juli 1988
1.253. august 1988
1.2618. august 1988
1.275. september 1988
1.2814. september 1988
1.296. oktober 1988
1.3013. oktober 1988
1.3119. november 1988
1.3221. desember 1988
1.331. februar 1989
1.3423. februar 1989
1.3526. april 1989
1.3624. september 1989
G++ 1.36.316. januar 1990C++ kompilator
G++ 1.36.430. januar 1990C++ kompilator
1.3711. februar 1990
1.37.121. februar 1990
G++ 1.37.028. februar 1990C++ kompilator
G++ 1.37.11. mars 1990C++ kompilator
1.3821. desember 1990
1.3916. januar 1991
G++ 1.39.14. mai 1991C++ kompilator
1.401. juni 1991
G++ 1.40.319. oktober 1991C++ kompilator
2.022. februar 1992
2.124. mars 1992
2.28. juni 1992
2.2.19. juni 1992
2.2.214. juni 1992
G++ 1.41.013. juli 1992C++ kompilator
1.4127. august 1992
1.4220. september 1992
G++ 1.42.020. september 1992C++ kompilator
2.331. oktober 1992
2.3.11. november 1992
2.3.227. november 1992
2.3.326. desember 1992
2.4.017. mai 1993
2.4.126. mai 1993
2.4.231. mai 1993
2.4.31. juni 1993
2.4.419. juni 1993
2.4.520. juni 1993
2.5.022. oktober 1993
2.5.131. oktober 1993
2.5.21. november 1993
2.5.311. november 1993
2.5.416. november 1993
2.5.527. november 1993
2.5.63. desember 1993
2.5.712. desember 1993
2.5.824. januar 1994
2.6.014. juli 1994
2.6.11. november 1994
2.6.212. november 1994
2.6.330. november 1994
2.7.016. juni 1995
2.7.112. november 1995
2.7.226. november 1995
2.7.2.129. juni 1996
2.7.2.229. januar 1997
2.7.2.322. august 1997
EGSC 1.03. desember 1997Versjon 2.90.21 av GNU C
EGSC 1.0.16. januar 1998Versjon 2.90.23 av GNU C
2.8.07. januar 1998
2.8.12. mars 1998
EGSC 1.0.216. mars 1998Versjon 2.90.27 av GNU C
EGSC 1.0.315. mai 1998Versjon 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.13. september 1998Versjon 2.91.57 av GNU C
EGSC 1.1.11. desember 1998Versjon 2.91.60 av GNU C
EGSC 1.1.215. mars 1999Versjon 2.91.66 av GNU C
2.9531. juli 1999Uvidet støtte for standardeneC99 ogISO C++98,[9] bedre støtte forFortran 77.[9][10] Tilføyd programmeringsspråkeneJava ogCHILL.[9]
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 å dumpekontrollflytgrafens (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.[9]
GCC 2.95 tilføyde støtte for operativsystemeneOpenBSD ogFreeBSD, Linux forARM-arkitekturen, samt programmeneUWIN ogInterix for interoperabilitet mellom Unix ogMicrosoft Windows.[9] Tilføyd støtte forsanntidsoperativsystemetvxWorks, inkluderttråder for VxWorks.[9]
Omskriving av kompilatorenesbackend for å gi full støtte for 64-biterUltraSPARC.[9][11] Tilføyd støtte for 32-biterHyperSPARC og 32-biterSparclite. Diverse optimaliseringer for 64-biter mikroprosessorenPA-8000 (PA-RISC 2.0).[9] Diverse optimaliseringer forIA-32, deriblantAMD K6.[9] Tilføyd støtte for 64-biter mikroprosessorenAlpha 21264 (EV6),[9] 32-biter mikroprosessorenePowerPC 750,PowerPC 401, PowerPC 403 ogPowerPC 603,[9] dedigitale signalprosessorene TMS320C3x ogTMS320C4x fraTexas Instruments,[9] 32-biterRISC-prosessoreneSuperH4,[9]StrongARM 110 ogARM9.[9] Forskjellige forandringer i porteringen til RISC-arkitekturenMIPS, for å unngåassembler-makroer,[9] ulike optimaliseringer for RISC-prosessorenIntel i960,[9] og en omskriving av porteringen tilNS320xx fraNational Semiconductor.[9]
2.95.119. august 1999Signatur-utvidelsene i syntaksen til G++ ble definert som foreldet, og ble fjernet i GCC 3.0.[9] GCC 2.95.1 hadde færre arkaiske G ++ konstruksjoner enn GCC 2.95.[9]
2.95.227. oktober 1999Tilføyde makroen Define __STDC_EXT__ forHP-UX konfigurasjoner.[9] TilføydefeilsøkingsdataformatetSTABS i stedet for formatetDWARF1Solaris versjonene 2.4, 2.5, 2.6 og 7 påx86.[9] Tilføyde C++ kompatible include filer for Linux for ARM.[9]
2.95.2.110. desember 2000Feilrettinger.[9]
2.95.316. mars 2001
3.018. juni 2001
3.0.120. august 2001
3.0.225. oktober 2001
3.0.320. desember 2001
3.0.421. februar 2002
3.115. mai 2002
3.1.126. juli 2002
3.214. august 2002
3.2.121. november 2002
3.2.25. februar 2003
3.2.325. april 2003
3.314. mai 2003
3.3.18. august 2003
3.3.217. oktober 2003
3.3.314. februar 2004
3.4.018. april 2004
3.3.431. mai 2004
3.4.11. juli 2004
3.4.26. september 2004
3.3.530. september 2004
3.4.34. november 2004
4.0.020. april 2005
3.3.63. mai 2005
3.4.418. mai 2005
4.0.17. juli 2005
4.0.228. september 2005
3.4.530. november 2005
4.1.028. februar 2006
3.4.66. mars 2006
4.0.310. mars 2006
4.1.124. mai 2006
4.0.431. januar 2007
4.1.213. februar 2007
4.2.013. mai 2007
4.2.118. juli 2007
4.2.27. oktober 2007
4.2.31. februar 2008
4.3.05. mars 2008
4.2.419. mai 2008
4.3.16. juni 2008
4.3.227. august 2008
4.3.324. januar 2009
4.4.021. april 2009
4.4.122. juli 200983 feilrettinger
4.3.44. august 2009
4.4.25. oktober 201020 feilrettinger
4.4.321. januar 2010
4.5.014. april 2010Støtten forIRIX før versjon 6.5,Solaris 7 ogTru64 UNIX eldre enn V5.1 opphørt. Støtten for de første versjonene av mikroprosessorenPOWER1 (RIOS1 og RIOS2) opphørt.
4.4.429. april 2010
4.3.522. mai 2010
4.5.131. juli 2010
4.4.51. oktober 2010
4.5.216. desember 2010
4.6.025. mars 2011Støtten forInterix,Netware for i386, ABI for 32-bit RISC-prosessorenM·CORE (M·CORE PE),SymbianOS,GNU Hurd for Alpha/PowerPC ogμClinux forMotorola 68000 opphørt. Støtten forArgonaut ARC,National Semiconductor CRX,Motorola 68HC11 og 68HC12 ogSunplus S+core opphørt.
4.4.616. april 2011
4.5.328. april 2011
4.3.627. juni 2011
4.6.127. juni 2011
4.6.226. oktober 2011
4.6.31. mars 2012
4.4.713. mars 2012
4.7.022. mars 2012Støtten forIRIX 6.5, MIPSOpenBSD,Solaris 8 ogTru64 UNIX V5.1 opphørt.
4.7.114. juni 2012
4.5.42. juli 2012
4.7.220. september 2012
4.8.022. mars 2013
4.7.311. april 2013
4.6.412. april 2013
4.8.131. mai 2013Støtte for C++11ref-qualifiers tilføyd. Den første kompilator til å implementere alle de større språklige egenskaper i C++11 standarden.
4.8.216. oktober 2013
4.9.022. april 2014Støtten forSolaris 9 opphørt. Tilføyd støtte for 512-biterSIMD-instruksjonssettAVX-512 på mikroprosessorenIntel Xeon Phi.
4.8.322. mai 2014
4.9.116. juli 2014OpenMP 4.0 forFortran tilføyd. Støtte i Fortran for IEEE iboende moduler som spesifisert i standardene Fortran-2003 og Fortran-2008.
4.9.230. oktober 2014Støtte forCilk Plus ble tilføyd GCC.
4.8.419. desember 2014GCC kan nå bli bygd som et delt bibliotek hvor andre interpretere og kompilatorer kan foretaJust-in-time compilation. Bidrag avRed Hat.
5.122. april 2015std=gnu89 blir erstattet av std=gnu11 (C++11 med Gnu-utvidelser) som standard. Støtte forC++14 og delvis støtte forC++17. Støtte forDragonFly BSD,FreeBSD forARM og VxWorks MILS (Multiple Independent Levels of Security) forPowerPC. Støtte for arkitekturenVISIUMcore ogMIPS Release 6 ble tilføyd. Tilføyd støtte forIntel MPXSkylake-arkitekturen. Tilføyd støtte forIntel Xeon Skylake utvidelser tilSIMD-instruksjonssettetAVX-512.
4.8.523. juni 2015
4.9.326. juni 2015
5.216. juli 2015
5.34. desember 2015
6.127. april 2016
5.43. juni 2016
4.9.43. august 2016
6.222. august 2016
6.321. desember 2016
7.12. mai 2017
6.44. juli 2017
7.214. august 2017
5.510. oktober 2017
7.325. januar 2018
8.12. mai 2018
8.226. juli 2018
6.526. oktober 2018
7.46. desember 2018
8.322. februar 2019
9.13. mai 2019
9.212. august 2019
7.514. november 2019
8.44. mars 2020
9.312. mars 2020
10.17. mai 2020
10.223. juli 2020
10.38. april 2021
11.127. april 2021
8.514. mai 2021
9.41. juni 2021
11.228. juli 2021
11.321. april 2022
12.16. mai 2022
9.527. mai 2022
10.428. juni 2022
12.219. august 2022
13.126. april 2023
12.38. mai 2023
11.429. mai 2023
10.57. juli 2023
13.227. juli 2023
14.17. mai 2024
13.321. mai 2024
12.420. juni 2024
11.519. juli 2024
14.21. august 2024
15.125. april 2025
14.323. mai 2025
13.45. juni 2025
12.511. juli 2025
15.28. august 2025
13.5
14.4

Se også

Referanser

  1. ^https://www.gnu.org/software/gcc/releases.html.
  2. ^Richard Biener (23. mai 2025).«GCC 14.3 Released» (påengelsk). Besøkt 5. juni 2025. 
  3. ^«GCC Releases». GNU Project. Besøkt 24. april 2009. 
  4. ^«Programming Languages Supported by GCC». GNU Project. Besøkt 24. april 2009. 
  5. ^Free Software Foundation, Inc.:What Is the GNU Hurd?, 2010
  6. ^Holmevik 2012, side 69-71
  7. ^Hagen 2006
  8. ^Proceedings of the 2003 GCC Developers Summit (sidene 171-193)Arkivert 15. juli 2004 hosWayback Machine.
  9. ^abcdefghijklmnopqrstuvwFree Software Foundation, Inc:GCC 2.95 New Features, 31. juli 1999
  10. ^6 News About GNU Fortran
  11. ^Free Software Foundation, Inc:SPARC Backend Rewrite. 31. juli 1999

Litteratur

Eksterne lenker

Oppslagsverk/autoritetsdata
Hentet fra «https://no.wikipedia.org/w/index.php?title=GNU_Compiler_Collection&oldid=25319193»
Kategorier:
Skjulte kategorier:

[8]ページ先頭

©2009-2026 Movatter.jp