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 .
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.
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 .
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):
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.
Instrumentul principal pentru depanarea programelor compilate cu GCC este GNU Debugger (gdb). Există, de asemenea, instrumente de depanare foarte specializate:
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] .
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] .
Proiectul GNU | ||
---|---|---|
Poveste | ||
Licențe |
| |
software _ |
| |
Personalități |
| |
Alte subiecte |
|
Software gratuit și open source | |
---|---|
Lucrul principal |
|
Comunitate |
|
Organizații | |
Licențe | |
Probleme | |
Alte |
|
|