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
Kehittäjä GNU-projekti
Kehityshistoria
Ensijulkaisu 23. toukokuuta 1987[1]
Vakaa versio 12.2 ()[2]
Tiedot
Ohjelmistotyyppi Ohjelmointikielen kääntäjä
Alusta alustariippumaton
Lisenssi GNU GPL
Aiheesta muualla
Verkkosivusto
Versiohallinta

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ä.[3][4] Java-kääntäjä on poistettu GCC:stä versiosta 7 alkaen.[5] Varhainen tuki Rust-kielelle on lisätty joulukuussa 2022, mutta tuki ei ole vielä täysin valmis GCC version 13 julkaisuun mennessä.[6][7] Modula-2-kielen tuki on lisätty kehitysversioon joulukuussa 2022.[8]

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

Historia

Richard Stallman aloitti GCC:n kehityksen. GCC oli aluksi kirjoitettu Pastel-kielellä, joka oli Pascal-kielen murre.[12] Jotta kääntäjä saatiin kevyemmäksi ja helpommin käännettäväksi Len Tower ja Stallman kirjoittivat sen uudelleen C-kielellä.[12][13] Ensimmäinen beetaversio julkaistiin 22. maaliskuuta 1987 ja 1.0 julkaistiin 23. toukokuuta.[14][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.[15]

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ä.[16]

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

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).[18] 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.[18]

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

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

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

GCC tukee D 2.0 -kieltä.[18]

Arkkitehtuurit

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:

Lähteet

  1. http://www.gnu.org/software/gcc/releases.html
  2. GCC 12.2 Released, (viitattu ). Tieto on haettu Wikidatasta.
  3. https://gcc.gnu.org/gcc-8/changes.html#go
  4. https://gcc.gnu.org/gcc-9/changes.html#d
  5. https://gcc.gnu.org/gcc-7/changes.html#java
  6. Michael Larabel: GCC Rust "gccrs" Code Merged Into Mainline GCC 13 phoronix.com. 13.12.2022. Viitattu 13.12.2022. (englanniksi)
  7. GCC 13 and the state of gccrs rust-gcc.github.io. 24.4.2023. Viitattu 25.4.2023. (englanniksi)
  8. Michael Larabel: Modula-2 Language Frontend Merged Into GCC 13 phoronix.com. 14.12.2022. Viitattu 15.12.2022. (englanniksi)
  9. How to Build a GCC Cross-Compiler preshing.com. 19.11.2014. Viitattu 10.2.2020. (englanniksi)
  10. setting up gcc as a cross-compiler ps2stuff.playstation2-linux.com. Arkistoitu . Viitattu 10.2.2020. (englanniksi)
  11. 32-bit life support: Cross-compiling with GCC opensource.com. Viitattu 10.2.2020. (englanniksi)
  12. Gnu's Bulletin (sivu 10) web.cecs.pdx.edu. helmikuu 1986. Viitattu 15.1.2020. (englanniksi)
  13. Richard Stallman: The GNU Project gnu.org. Viitattu 7.3.2020. (englanniksi)
  14. http://groups.google.com/group/comp.lang.misc/msg/32eda22392c20f98
  15. https://web.archive.org/web/20120120133433/http://kerneltrap.org/node/13975
  16. GCC's move to C++ lwn.net. 13.3.2013. Viitattu 29.2.2020. (englanniksi) 
  17. GCC 7.1 Released LWN.net. 2.5.2017. Viitattu 8.5.2017.
  18. 2 Language Standards Supported by GCC gcc.gnu.org. Viitattu 28.11.2022. (englanniksi)
  19. Hexagon Project Wiki codeaurora.org.
  20. sx-gcc: port gcc to nec sx vector cpu code.google.com.

    Aiheesta muualla

    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.