Colecția de compilatori GNU

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 11 iulie 2020; verificările necesită 15 modificări .
Colecția de compilatori GNU
Tip de compilator
Dezvoltator Proiectul GNU
Scris in C++
Sistem de operare GNU/Linux [5] și BSD [6]
Prima editie 23 mai 1987 [1]
Platformă hardware multiplatformă
ultima versiune
Versiune de testare
Licență GNU GPL 3
Site-ul web gcc.gnu.org
 Fișiere media la Wikimedia Commons

GNU Compiler Collection (abreviată în mod obișnuit ca GCC ) este o colecție de compilatoare pentru diferite limbaje de programare dezvoltate ca parte a proiectului GNU . GCC este un software liber , distribuit printre altele de Free Software Foundation (FSF) în conformitate cu termenii GNU GPL și GNU LGPL și este o componentă cheie a lanțului de instrumente GNU . Este folosit ca compilator standard pentru sisteme de operare gratuite asemănătoare UNIX .

Numit inițial GNU C Compiler , acesta a acceptat doar limbajul C. GCC a fost extins ulterior pentru a compila coduri sursă în limbaje de programare precum C++ , Objective- C , Java , Fortran , Ada , Go , GAS și D.

Din versiunea 4.2.2, GCC a trecut la licența GPLv3 .

Prezentare generală

GCC a fost început de Richard Stallman , care a implementat prima versiune a GCC în 1985 într-un dialect non-standard și non-portabil de Pascal ; compilatorul a fost mai târziu rescris în C de Leonard Tower și Richard Stallman [7] și lansat în 1987 [8] ca compilator pentru proiectul GNU, care în sine era software liber. Dezvoltarea GCC este supravegheată de Free Software Foundation [9] .

GCC este întreținut în prezent de un grup de programatori din întreaga lume. GCC este lider în ceea ce privește numărul de procesoare și sisteme de operare pe care le suportă.

Ca compilator oficial de sistem GNU , GCC este, de asemenea, compilatorul principal pentru construirea unui număr de alte sisteme de operare; printre acestea se numără diverse arome de Linux și BSD (în prezent se folosește anterior clang llvm), precum și ReactOS , Mac OS X , OpenSolaris , NeXTSTEP , BeOS și Haiku .

GCC este adesea ales pentru dezvoltarea de software care trebuie să ruleze pe un număr mare de platforme hardware diferite. Diferențele dintre compilatoarele „native” pentru fiecare dintre platformele hardware duc la dificultăți în dezvoltarea codului care ar fi compilat corect de diferiți compilatori și, în plus, atunci când se folosesc compilatoare diferite, construirea scripturilor care trebuie să construiască software pentru toate platformele hardware devin foarte complicate. Când utilizați GCC pentru a compila cod pentru diferite platforme, va fi folosit același parser . Prin urmare, dacă ați reușit să compilați programul pentru una dintre platformele țintă, atunci este foarte probabil ca programul să se compila în mod normal și pentru alte platforme.

Limbi

Compilatorul standard include front-end-uri pentru limbi:

Frontend-ul pentru CHILL a fost adăugat mai devreme, dar din cauza suportului insuficient, a fost exclus din set. Înainte de versiunea 4.0, front-end-ul pentru Fortran era G77, care suporta doar FORTRAN 77. În versiunile noi, G77 a fost abandonat în favoarea noului frontend GFortran, care acceptă Fortran 95.

Există, de asemenea, front-end-uri terțe pentru Pascal , Modula-2 , Modula-3 , Mercury , VHDL și PL/I .

Arhitecturi

Lista procesoarelor acceptate de GCC (pentru versiunea 7.1) include

Procesoare mai puțin cunoscute acceptate în versiunea standard:

Tipuri suplimentare de arhitecturi și procesoare care sunt acceptate de versiunile GCC, dar acceptate de terți (nu Free Software Foundation):

Structura

Interfața GCC este standardul pentru compilatoare pe platforma UNIX. Utilizatorul invocă un program de control numit gcc . Acesta interpretează argumentele liniei de comandă, determină și lansează propriile compilatoare pentru limba dorită pentru fiecare fișier de intrare și lansează asamblatorul și linkerul , dacă este necesar .

Compilatorul fiecărei limbi este un program separat care preia codul sursă și produce rezultate în limbaj de asamblare . Toate compilatoarele au o structură internă comună: un front end care analizează și generează un arbore de sintaxă abstractă și un back end care convertește arborele în Register Transfer Language (RTL), efectuează diverse optimizări, apoi generează un program în limbaj de asamblare folosind potrivirea modelului dependentă de arhitectură .

Înainte de versiunea 4.7.2, GCC a fost scris aproape în întregime în C , deși o mare parte din front-end-ul pentru Ada a fost scris în Ada . Din 14 august 2012, dezvoltarea a fost tradusă în C++ [15] , versiunea 4.8 [16] și mai târziu necesită un compilator C++ care acceptă C++ 2003 pentru asamblarea lor.

Depanare programe compilate cu GCC

Instrumentul principal pentru depanarea programelor compilate cu GCC este GNU Debugger (gdb). Există, de asemenea, instrumente de depanare foarte specializate:

Licență

Versiunea GCC 4.2.1 a fost ultima versiune lansată sub Licența publică generală GNU versiunea 2 . Toate versiunile ulterioare sunt licențiate sub GPL versiunea 3 [17] .

Critica

Unii dezvoltatori OpenBSD , cum ar fi Theo de Raadt și Otto Moerbeek , au criticat GCC ca fiind „îngreunat, greșit, lent și generator de cod prost” [18] . Din cauza acestei atitudini critice și, de asemenea, din cauza licenței GPL destul de restrictive (comparativ cu BSD) sub care este lansată colecția de compilatoare, s-a încercat înlocuirea GCC în NetBSD și OpenBSD cu alte compilatoare, cum ar fi PCC [19] . Lucrări similare pentru înlocuirea GCC cu Clang sunt în curs de desfășurare în FreeBSD [20] .

Vezi și

Note

  1. https://www.gnu.org/software/gcc/releases.html
  2. Biener R. GCC 12.2 Lansat - 2022.
  3. Biener R. GCC 11.3 Lansat  - 2022 .
  4. Jelinek J. GCC 10.4 Lansat  - 2022 .
  5. Instalarea GCC - Proiectul GNU - Free Software Foundation (FSF)
  6. Instalarea GCC - Proiectul GNU - Free Software Foundation (FSF)
  7. Stallman, Richard M. Statutul GNU  (nedefinit)  // Buletinul GNU. - Free Software Foundation, 1986. - Februarie ( vol. 1 , nr. 1 ). Arhivat din original pe 21 august 2007.
  8. Tower, Leonard (1987) „ GNU C compiler beta test release, Arhivat 5 noiembrie 2011 la Wayback Machine ” comp.lang.misc USENET newsgroup; vezi, de asemenea, http://gcc.gnu.org/releases.html#timeline Arhivat la 28 decembrie 2006 la Wayback Machine
  9. Stallman, Richard M. (2001) „ Colaboratori la GCC, arhivat la 3 ianuarie 2007 la Wayback Machine ” în Utilizarea și portarea GNU Compiler Collection (GCC) Arhivat la 27 decembrie 2006 la Wayback Machine pentru versiunea 2.95 de gcc (Cambridge Mass. : Free Software Foundation)
  10. GCC 7 Release Series - Changes, New Features, and Fixes - Proiect GNU - Free Software Foundation (FSF) . gcc.gnu.org. Preluat la 31 august 2019. Arhivat din original la 2 septembrie 2020.
  11. GCC 4.6 Release Series - Changes, New Features, and Fixes - Proiect GNU - Free Software Foundation (FSF) . Consultat la 23 ianuarie 2011. Arhivat din original la 4 noiembrie 2015.
  12. Limbajul de programare GDC-D pentru GCC . gdcproject.org. Preluat la 31 august 2019. Arhivat din original la 6 august 2019.
  13. GCC 9 Release Series - Changes, New Features, and Fixes - Proiect GNU - Free Software Foundation (FSF) . gcc.gnu.org. Preluat la 31 august 2019. Arhivat din original la 19 februarie 2022.
  14. http://gcc.gnu.org/ Arhivat pe 11 ianuarie 2012 la Wayback Machine „Suport procesor TI C6X [2011-07-15] Un port pentru familia de procesoare TI C6X”
  15. Conversie C++. Acest proiect este o continuare a proiectului GCC de compilare în C++. Arhivat 14 octombrie 2012 la Wayback Machine / GCC wiki,  2012
  16. GCC 4.8 Release Series Arhivat 8 decembrie 2015 la Wayback Machine : „GCC folosește acum C++ ca limbaj de implementare. Aceasta înseamnă că pentru a construi GCC din surse, veți avea nevoie de un compilator C++ care înțelege C++ 2003.”
  17. ↑ Instrumente : GCC 4.2.1 Released - KernelTrap  . kerneltrap.org (21 iulie 2007). Data accesului: 25 decembrie 2009. Arhivat din original la 17 februarie 2012.
  18. Mai multe despre noul compilator al OpenBSD - Mambo Arhivat 29 septembrie 2008.
  19. Spre un compilator cu licență BSD (downlink) . Consultat la 3 noiembrie 2008. Arhivat din original pe 24 octombrie 2008. 
  20. FreeBSD Status Reports ianuarie - martie 2009 . Consultat la 19 aprilie 2010. Arhivat din original pe 17 aprilie 2010.

Literatură

Link -uri