Kolekce kompilátorů GNU

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 11. července 2020; kontroly vyžadují 15 úprav .
Kolekce kompilátorů GNU
Typ kompilátor
Vývojář Projekt GNU
Zapsáno v C++
Operační systém GNU/Linux [5] a BSD [6]
První vydání 23. května 1987 [1]
Hardwarová platforma multiplatformní
Nejnovější verze
Testovací verze
Licence GNU GPL 3
webová stránka gcc.gnu.org
 Mediální soubory na Wikimedia Commons

GNU Compiler Collection (běžně zkráceně GCC ) je sbírka kompilátorů pro různé programovací jazyky vyvinutá jako součást projektu GNU . GCC je svobodný software distribuovaný mimo jiné nadací Free Software Foundation (FSF) za podmínek GNU GPL a GNU LGPL a je klíčovou součástí GNU toolchainu . Používá se jako standardní kompilátor pro svobodné operační systémy podobné UNIXu .

Původně se jmenoval GNU C Compiler a podporoval pouze jazyk C. GCC byl později rozšířen o kompilaci zdrojových kódů v programovacích jazycích jako C++ , Objective-C , Java , Fortran , Ada , Go , GAS a D.

Od verze 4.2.2 přešlo GCC na licenci GPLv3 .

Přehled

GCC odstartoval Richard Stallman , který implementoval první verzi GCC v roce 1985 v nestandardním a nepřenosném dialektu Pascalu ; kompilátor byl později přepsán v C Leonardem Towerem a Richardem Stallmanem [7] a vydán v roce 1987 [8] jako kompilátor pro projekt GNU, který sám byl svobodným softwarem. Na vývoj GCC dohlíží Free Software Foundation [9] .

GCC v současnosti spravuje skupina programátorů z celého světa. GCC je lídrem v počtu procesorů a operačních systémů , které podporuje.

Jako oficiální kompilátor systému GNU je GCC také hlavním kompilátorem pro vytváření řady dalších operačních systémů; mezi nimi jsou různé varianty Linuxu a BSD (dříve se v současnosti používá clang llvm) a také ReactOS , Mac OS X , OpenSolaris , NeXTSTEP , BeOS a Haiku .

GCC se často volí pro vývoj softwaru, který potřebuje běžet na velkém počtu různých hardwarových platforem. Rozdíly mezi „nativními“ kompilátory pro každou z hardwarových platforem vedou k potížím při vývoji kódu, který by byl správně zkompilován různými kompilátory, a navíc se při použití různých kompilátorů velmi komplikují sestavení skriptů, které musí sestavit software pro všechny hardwarové platformy. Při použití GCC ke kompilaci kódu pro různé platformy bude použit stejný analyzátor . Pokud se vám tedy podařilo zkompilovat program pro některou z cílových platforem, pak je vysoce pravděpodobné, že se program zkompiluje normálně i pro jiné platformy.

Jazyky

Standardní kompilátor obsahuje front-endy pro jazyky:

Frontend pro CHILL byl přidán dříve, ale kvůli nedostatečné podpoře byl ze sady vyřazen. Před verzí 4.0 byl front-end pro Fortran G77, který podporoval pouze FORTRAN 77. V nových verzích byl G77 vynechán ve prospěch nového frontendu GFortran, který podporuje Fortran 95.

Existují také front-endy třetích stran pro Pascal , Modula-2 , Modula-3 , Mercury , VHDL a PL/I .

Architektury

Seznam procesorů podporovaných GCC (pro verzi 7.1) obsahuje

Méně známé procesory podporované ve standardní verzi:

Další typy architektur a procesorů, které jsou podporovány verzemi GCC, ale podporovány třetími stranami (nikoli Free Software Foundation):

Struktura

Rozhraní GCC je standardem pro kompilátory na platformě UNIX. Uživatel vyvolá ovládací program s názvem gcc . Interpretuje argumenty příkazového řádku, určuje a spouští vlastní kompilátory pro požadovaný jazyk pro každý vstupní soubor a v případě potřeby spouští assembler a linker .

Kompilátor každého jazyka je samostatný program, který přebírá zdrojový kód a vytváří výstup v jazyce symbolických instrukcí . Všechny kompilátory sdílejí společnou vnitřní strukturu: přední část, která analyzuje a generuje abstraktní strom syntaxe , a zadní část, která převádí strom na jazyk pro přenos registrů (RTL), provádí různé optimalizace a poté generuje program v jazyce symbolických instrukcí pomocí porovnávání vzorů závislé na architektuře .

Před verzí 4.7.2 bylo GCC napsáno téměř výhradně v jazyce C , ačkoli velká část front-endu pro Ada byla napsána v Ada . Od 14. srpna 2012 je vývoj přeložen do C++ [15] , verze 4.8 [16] a později vyžaduje kompilátor C++, který podporuje C++ 2003 pro jejich sestavení.

Ladění programů zkompilovaných pomocí GCC

Hlavním nástrojem pro ladění programů zkompilovaných pomocí GCC je GNU Debugger (gdb). Existují také vysoce specializované nástroje pro ladění:

Licence

GCC verze 4.2.1 byla poslední verze vydaná pod GNU General Public License verze 2 . Všechny následující verze jsou licencovány pod licencí GPL verze 3 [17] .

Kritika

Někteří vývojáři OpenBSD , jako Theo de Raadt a Otto Moerbeek , kritizovali GCC jako „nemotorný, chybný, pomalý a generující špatný kód“ [18] . Kvůli tomuto kritickému postoji a také kvůli poměrně restriktivní (ve srovnání s BSD) licenci GPL, pod kterou je kolekce kompilátorů vydávána, byl učiněn pokus nahradit GCC v NetBSD a OpenBSD jinými kompilátory, jako je PCC [19] . Podobné práce na nahrazení GCC za Clang probíhají ve FreeBSD [20] .

Viz také

Poznámky

  1. https://www.gnu.org/software/gcc/releases.html
  2. ↑ Vydáno Biener R. GCC 12.2 – 2022.
  3. ↑ Vydání Biener R. GCC 11.3  – 2022 .
  4. Jelinek J. GCC 10.4 Vydáno  - 2022 .
  5. Instalace GCC - GNU Project - Free Software Foundation (FSF)
  6. Instalace GCC - GNU Project - Free Software Foundation (FSF)
  7. Stallman, Richard M. Stav GNU  (neurčeno)  // Bulletin GNU. - Free Software Foundation, 1986. - Únor ( vol. 1 , č. 1 ). Archivováno z originálu 21. srpna 2007.
  8. Tower, Leonard (1987) " Testovací beta verze kompilátoru GNU C, archivováno 5. listopadu 2011 na Wayback Machine " comp.lang.misc USENET diskusní skupina; viz také http://gcc.gnu.org/releases.html#timeline Archivováno 28. prosince 2006 na Wayback Machine
  9. Stallman, Richard M. (2001) " Přispěvatelé do GCC, archivováno 3. ledna 2007 na Wayback Machine " v Používání a portování GNU Compiler Collection (GCC) Archivováno 27. prosince 2006 na Wayback Machine pro gcc verze 2.95 (Cambridge Mass. : Free Software Foundation)
  10. GCC 7 Release Series – Změny, nové funkce a opravy – Projekt GNU – Free Software Foundation (FSF) . gcc.gnu.org. Získáno 31. srpna 2019. Archivováno z originálu dne 2. září 2020.
  11. GCC 4.6 Release Series – Změny, nové funkce a opravy – GNU Project – Free Software Foundation (FSF) . Získáno 23. ledna 2011. Archivováno z originálu dne 4. listopadu 2015.
  12. GDC - D Programovací jazyk pro GCC . gdcproject.org. Získáno 31. srpna 2019. Archivováno z originálu dne 6. srpna 2019.
  13. GCC 9 Release Series – Změny, nové funkce a opravy – GNU Project – Free Software Foundation (FSF) . gcc.gnu.org. Získáno 31. srpna 2019. Archivováno z originálu 19. února 2022.
  14. http://gcc.gnu.org/ Archivováno 11. ledna 2012 na Wayback Machine „Podpora procesoru TI C6X [2011-07-15] Port pro procesory rodiny TI C6X“
  15. C++ konverze. Tento projekt je pokračováním projektu sestavení GCC v C++. Archivováno 14. října 2012 na wiki Wayback Machine / GCC,  2012
  16. GCC 4.8 Release Series Archivováno 8. prosince 2015 na Wayback Machine : "GCC nyní používá C++ jako svůj implementační jazyk. To znamená, že k sestavení GCC ze zdrojů budete potřebovat kompilátor C++, který rozumí C++ 2003."
  17. ↑ Nástroje : Vydáno GCC 4.2.1 - KernelTrap  . kerneltrap.org (21. července 2007). Datum přístupu: 25. prosince 2009. Archivováno z originálu 17. února 2012.
  18. Více o novém kompilátoru OpenBSD – Mambo Archivováno 29. září 2008.
  19. Směrem k BSD-licencovanému kompilátoru (downlink) . Získáno 3. listopadu 2008. Archivováno z originálu 24. října 2008. 
  20. Zprávy o stavu FreeBSD leden – březen 2009 . Získáno 19. dubna 2010. Archivováno z originálu 17. dubna 2010.

Literatura

Odkazy