Sbírka překladačů GNU
Vyvinul | Projekt GNU |
---|---|
První verze | 23. května 1987 |
Poslední verze | 11,1 (27.dubna 2021) |
Vklad | gcc.gnu.org/git |
Napsáno | C ++ |
Rozhraní | Rozhraní příkazového řádku |
Jazyky podpory | C , C ++ , Objective-C , Fortran , Ada , Go a D. |
Operační systém | Linux , Hurd a Microsoft Windows |
životní prostředí | Multiplatformní |
Typ | Překladač |
Licence | GNU General Public License verze 3 |
webová stránka | gcc.gnu.org |
GNU Compiler Collection , zkráceně GCC , je kolekce překladačů vytvořených projektem GNU . GCC je svobodný software schopný kompilovat různé programovací jazyky , včetně C , C ++ , Objective-C , Java , Ada , Fortran a Go .
GCC se používá pro vývoj většiny svobodného softwaru. Linuxové jádro je do značné míry závislá na funkčnost GCC.
GCC byl navržen tak, aby nahradil překladač C dodávaný standardně v operačním systému Unix , který se nazývá CC. GCC původně kandidoval na GNU C Compiler nebo „ GNU C Compiler “. Protože GCC je velmi rozšiřitelný, byla přidána podpora pro mnoho dalších jazyků a oficiální název byl změněn na GNU Compiler Collection .
V praxi se zkratka GCC používá k pojmenování tří mírně odlišných entit:
Abychom konkrétně odkazovali na překladače každého jazyka, mluvíme o:
Existuje mnoho dalších překladačů založených na GCC, které nejsou součástí standardní distribuce projektu GCC.
Od verze 4.5 (4.6 a vyšší) jsou kompilátory GCC rozšiřitelné prostřednictvím pluginů („ pluginy “). Musí to být svobodný software a mohou přidávat optimalizační vstupy, pragmy, vestavěné prvky nebo atributy (ale nemohou rozšířit syntaxi přijímanou GCC). Existuje několik pluginů pro GCC: Mozilla vyvinula Tree Hydra (ukončena). Plugin gcc python umožňuje rozšířit GCC o skripty Pythonu, zejména ověřit C kód pro Python. MELT je specifický jazyk inspirovaný Lispem k rozšíření GCC.
GCC má také ladicí nástroj GNU Debugger (gdb). Přestože Valgrind není součástí GCC, je upřednostňován pro podrobnější testování, zejména pro zjištění úniků paměti .
GCC bylo přeneseno na značné množství operačních systémů (prakticky všechny varianty Unixu , VMS , Windows a MS-DOS přes DJGPP ) a mikroprocesorů ( AMD64 , ARM , DEC Alpha , M68k , MIPS , PowerPC , SPARC , x86 , Hitachi H8 ).
GCC pro jazyk C nepodporuje identifikátory Unicode .
Richard Stallman začíná jeho vývoj s programovacího jazyka Pastel , který nemá přenosné „dialekt“ z Pascal . První verzi lze tedy použít odČerven 1984. Tento jazyk je částečně inspirován kompilátorem Pastel , ale také přenosným kompilátorem Arizonské univerzity .
Na jaře 1986 napsal nový kompilátor ANSI C , poté s pomocí Len Tower a pod záštitou Free Software Foundation distribuoval první beta verzi na22. března 1987a první stabilní verze o dva měsíce později. Na konci 80. let GCC již podporovalo téměř tucet architektur; Michael Tiemann se poté jeví jako nejaktivnější se šesti porty prováděnými samostatně. Dokonce se mu připisuje nativní podpora jazyka C ++ od konce roku 1987, díky čemuž je překladač GNU první, který tento jazyk podporuje. Michael Tiemann počátkem 90. let od projektu postupně upustil kvůli nedostatku času kvůli svým aktivitám ve společnosti Cygnus Solutions .
V roce 1992 přinesla verze 2.0 kromě mnoha optimalizací stabilní podporu pro jazyk C ++. Zdá se, že projekt vstupuje do nové éry, která se běžně nazývá „ roky Cygnus “. Toto období začíná procesem přechodu z verze 1.42 na novou verzi.
V roce 1997 , skupina vývojářů tvrdí, že model rozvoje pomalé a nepříliš příznivé pro zlepšení, a tak se rozhodli, že vidlice projektu a pojmenoval ho EGCS (pro „ Experimentální / Enhanced GNU Compiler System “). Po mnoha provedených vylepšeních se EGCS a GCC sjednotily v dubnu 1999 , první publikovaná verze je 2,95.
GCC pečlivě sleduje vývoj jazykové standardizace a někdy jí dokonce předchází; tedy některé funkce standardu C99 byly přítomny již před oficiálním zveřejněním.
GCC je dnes nejpoužívanějším překladačem ve svobodné softwarové komunitě a je překladačem pro mnoho operačních systémů, jako jsou GNU / Linux , BSD , Mac OS X , NeXTSTEP nebo dokonce BeOS / Haiku .
Verze stanoví řídící výbor GCC . Verze 4 sestavuje Fortran 95 na žádost velkého počtu vědeckých uživatelů. Ve skutečnosti právě v tomto jazyce dochází k výměně většiny současných zdrojových knihoven a vědeckých podprogramů ; Linux je v laboratořích velmi přítomen. Od verze 5, prostřednictvím OpenACC , byla vylepšena kompatibilita s jazykem Fortran a verze 6 byla podstatně vylepšena. Na začátku roku 2021 implementoval GFortran 10.2 téměř plně standard Fortran 2008 a přibližně 20% standardu Fortran 2018.
Zde jsou data vydání nejnovějších hlavních verzí:
Verze | Datum vydání |
---|---|
3.0 | 18. června 2001 |
3.1 | 15. května 2002 |
3.2 | 14. srpna 2002 |
3.3 | 13. května 2003 |
3.4 | April 18 , 2004, |
3.4.6 | 6. března 2006 |
4.0 | 20. dubna 2005 |
4.0.4 | 31. ledna 2007 |
4.1 | 28. února 2006 |
4.1.2 | 13. února 2007 |
4.2 | 13. května 2007 |
4.2.4 | 19. května 2008 |
4.3 | 5. března 2008 |
4.3.5 | 22. května 2010 |
4.4 | 21. dubna 2009 |
4.4.5 | 1 st October 2010 |
4.5 | 14. dubna 2010 |
4.5.1 | 31. července 2010 |
4.5.2 | 16. prosince 2010 |
4.6 | 25. března 2011 |
4.7 | 22. března 2012 |
4.8 | 22. března 2013 |
4.9 | April 22 , 2014 |
5.1 | April 22 , do roku 2015 |
5.2 | 16. července 2015 |
5.3 | 4. prosince 2015 |
5.4 | 3. června 2016 |
6.2 | 22. srpna 2016 |
6.3 | 21. prosince 2016 |
7.1 | 2. května 2017 |
7.2 | 14. srpna 2017 |
7.3 | 25. ledna 2018 |
8.1 | 2. května 2018 |
8.2 | 14. července 2018 |
8.3 | 22. února 2019 |
9.1 | 25. dubna 2019 |
9.2 | 12. srpna 2019 |
9.3 | 12. března 2020 |
10.1 | 7. května 2020 |
Základní syntaxe používaná kompilátory GCC je:
gcc fichierSource.c -o binaireChcete-li používat knihovny , je syntaxe následující:
gcc fichierSource.c -o binaire -l''bibliothèque''Mnoho možností (předaných jako parametr) vám umožňuje jednat podle kompilace. Program GCC se v makefile často používá programem make .
Obzvláště užitečné možnosti jsou -O1 nebo -O2, které řeknou kompilátoru, aby optimalizoval, -Wall požádat o téměř všechny varovné zprávy, -g pro generování informací o ladění, -c pro generování souboru objektu (bez úpravy odkazu).