GCC
GCC | |
---|---|
![]() |
|
![]() |
|
Kehittäjä | GNU-projekti |
Kehityshistoria | |
Ensijulkaisu | 23. toukokuuta 1987[1] |
Vakaa versio | 13.1 ()[2], 12.3 ()[3] ja 11.4 ()[4] |
Tiedot | |
Ohjelmistotyyppi | Ohjelmointikielen kääntäjä |
Alusta | alustariippumaton |
Lisenssi | GNU GPL |
Aiheesta muualla | |
Verkkosivusto | |
Versiohallinta |
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ä.[5][6] Java-kääntäjä on poistettu GCC:stä versiosta 7 alkaen.[7] Varhainen tuki Rust-kielelle on lisätty joulukuussa 2022, mutta tuki ei ole vielä täysin valmis GCC version 13 julkaisuun mennessä.[8][9] Modula-2-kielen tuki on lisätty kehitysversioon joulukuussa 2022.[10]
GCC:tä voidaan käyttää ristiinkääntäjänä, jolloin käännösympäristönä voi olla eri alusta kuin varsinainen kohdealusta.[11] Kohde voi olla esimerkiksi pelikonsoli (kuten PlayStation 2).[12][13]
Historia[muokkaa | muokkaa wikitekstiä]
Richard Stallman aloitti GCC:n kehityksen. GCC oli aluksi kirjoitettu Pastel-kielellä, joka oli Pascal-kielen murre.[14] Jotta kääntäjä saatiin kevyemmäksi ja helpommin käännettäväksi Len Tower ja Stallman kirjoittivat sen uudelleen C-kielellä.[14][15] Ensimmäinen beetaversio julkaistiin 22. maaliskuuta 1987 ja 1.0 julkaistiin 23. toukokuuta.[16][1] Ensimmäinen C++:aa kääntänyt versio, 1.15.3, julkaistiin 18. joulukuuta samana vuonna.[1]
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.[17]
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ä.[18]
Versio 7.1 lisää tuen C++17-standardin kaikille ominaisuuksille.[19]
Kielituki[muokkaa | muokkaa wikitekstiä]
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).[20] 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.[20]
C++-kielen versiot C++98, C++11, C++14, C++17 ja C++20 ovat tuettuja.[20]
Objective-C versio 1.0 on tuettu, jonka lisäksi joukko 2.0:n ominaisuuksia on tuettu. Lisäksi Objective-C++ on tuettu.[20]
Go-kielen Go 1 -versio on tuettu GCC:n versiosta 4.7.1 lähtien.[20]
GCC tukee D 2.0 -kieltä.[20]
Arkkitehtuurit[muokkaa | muokkaa wikitekstiä]
GCC:n kohdesuorittimet versiosta 4.3 lähtien:
Vähemmän tunnettuja suorittimia joita tuetaan vakiojulkaisussa:
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[21]
- LatticeMico32
- LatticeMico8
- MeP
- MicroBlaze
- Motorola 6809
- MSP430
- NEC SX[22]
- 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[muokkaa | muokkaa wikitekstiä]
- ↑ a b c http://www.gnu.org/software/gcc/releases.html
- ↑ GCC 13.1 Released, (viitattu ). Tieto on haettu Wikidatasta.
- ↑ (en) GCC 12.3 Released, (viitattu ). Tieto on haettu Wikidatasta.
- ↑ (en) GCC 11.4 Released, (viitattu ). Tieto on haettu Wikidatasta.
- ↑ https://gcc.gnu.org/gcc-8/changes.html#go
- ↑ https://gcc.gnu.org/gcc-9/changes.html#d
- ↑ https://gcc.gnu.org/gcc-7/changes.html#java
- ↑ Michael Larabel: GCC Rust "gccrs" Code Merged Into Mainline GCC 13 phoronix.com. 13.12.2022. Viitattu 13.12.2022. (englanniksi)
- ↑ GCC 13 and the state of gccrs rust-gcc.github.io. 24.4.2023. Viitattu 25.4.2023. (englanniksi)
- ↑ Michael Larabel: Modula-2 Language Frontend Merged Into GCC 13 phoronix.com. 14.12.2022. Viitattu 15.12.2022. (englanniksi)
- ↑ How to Build a GCC Cross-Compiler preshing.com. 19.11.2014. Viitattu 10.2.2020. (englanniksi)
- ↑ setting up gcc as a cross-compiler ps2stuff.playstation2-linux.com. Arkistoitu . Viitattu 10.2.2020. (englanniksi)
- ↑ 32-bit life support: Cross-compiling with GCC opensource.com. Viitattu 10.2.2020. (englanniksi)
- ↑ a b Gnu's Bulletin (sivu 10) web.cecs.pdx.edu. helmikuu 1986. Viitattu 15.1.2020. (englanniksi)
- ↑ Richard Stallman: The GNU Project gnu.org. Viitattu 7.3.2020. (englanniksi)
- ↑ http://groups.google.com/group/comp.lang.misc/msg/32eda22392c20f98
- ↑ https://web.archive.org/web/20120120133433/http://kerneltrap.org/node/13975
- ↑ GCC's move to C++ lwn.net. 13.3.2013. Viitattu 29.2.2020. (englanniksi)
- ↑ GCC 7.1 Released LWN.net. 2.5.2017. Viitattu 8.5.2017.
- ↑ a b c d e f 2 Language Standards Supported by GCC gcc.gnu.org. Viitattu 28.11.2022. (englanniksi)
- ↑ Hexagon Project Wiki codeaurora.org.
- ↑ sx-gcc: port gcc to nec sx vector cpu code.google.com.
Aiheesta muualla[muokkaa | muokkaa wikitekstiä]
- https://gcc.gnu.org/ – GCC:n kotisivu