GNU Compiler Collection
![]() ![]() | |
![]() ![]() | |
Tipus | compilador optimitzador, paquet GNU i programari lliure ![]() |
---|---|
Versió inicial | 23 maig 1987 ![]() |
Versió estable | |
Llicència | GNU GPL 3.0 GNU LGPL 2.1 ![]() |
Part de | GNU toolchain ![]() |
Característiques tècniques | |
Sistema operatiu | GNU/Linux, BSD, macOS, Microsoft Windows, Unix-like i Minix 3 ![]() |
Plataforma | multiplataforma ![]() |
Escrit en | C++ i C ![]() |
Equip | |
Desenvolupador(s) | Projecte GNU ![]() |
Més informació | |
Lloc web | gcc.gnu.org (anglès) ![]() |
Stack Exchange | Etiqueta ![]() |
Seguiment d'errors | Seguiment d'errors ![]() |
Free Software Directory | Gcc ![]() |
Id. Framalibre | gnu-compiler-collection ![]() |
| |
La GNU Compiler Collection (gcc) és un conjunt de compiladors de llenguatges de programació creat pel Projecte GNU. Així doncs, és programari lliure distribuït per la Free Software Foundation (FSF) sota la llicència GNU General Public License (GPL), i és un dels components clau de les eines de GNU. Aquest conjunt de compiladors és l'estàndard per a sistemes operatius Unix-like (com Linux), i de certs sistemes operatius propietaris derivats dels primers com podria ser el Mac OS X.
El desenvolupament de GNU ha permès que es pugui utilitzar un ordinador sense sofware respectant la llibertat dels usuaris.
Objectiu/Motivació
L’objectiu principal d’un compilador és, a partir d’un codi font en qualsevol dels seus llenguatges de programació compatibles, generar un programa executable binari en el llenguatge màquina on s’haurà d’executar.
El desenvolupament del GCC forma part del projecte GNU, i té l’objectiu de millorar el compilador que s’utilitza en els sistema GNU, incloent la variant de Linux.
Aquest desenvolupament utilitza un entorn de desenvolupament obert i suporta moltes plataformes diferents amb la idea de fomentar l’ús d’un únic compilador-optimitzador. D’aquesta manera s’assegura que el propi compilador i els sistemes desenvolupats de GNU funcionin amb les diferents arquitectures i entorns a més de estendre i millorar les característiques de GCC.
Ha estat adoptat com el compilador principal usat per construir i desenvolupar un gran nombre de sistemes, incloent GNU/Linux, la BSDs, OS X, NeXTSTEP i BeOS.
Un dels principals avantatges del compilador GCC és l'ús del mateix analitzador per a totes les plataformes, de manera que si el codi del programa compila correctament en una, hi ha moltes possibilitats que ho faci en totes. Encara que aquest fet pugui produir que s'executi una mica més lentament justifica el seu ús un cost de desenvolupament més baix.
Història
La necessitat d'un compilador gratuït pels sistemes operatius basats en Unix va impulsar Richard Stallman, al 1985 i a través del Projecte GNU, a escriure el compilador GCC sota el nom de GNU C Compiler des de zero. Es va llençar el març de 1987 i inicialment només suportava C.
El 1992 es va llençar la versió 2.0, que admetia el llenguatge C++.
El 1997, a la versió 3.0, es va crear EGCS, una branca experimental del compilador optimitzada per C++.
GCC s'ha ampliat per admetre altres llenguatges de programació com Fortran, ADA, Java i Objective-C. Actualment, el desenvolupament de GCC està guiat pel Comitè directiu de GCC, un grup amb representació de les diferents comunitats d'usuaris a la indústria, a la investigació i al món acadèmic.
Estructura / Disseny
La interfície exterior de GCC és estàndard per a un sistema UNIX. Els usuaris utilitzen un controlador anomenat gcc que interpreta, decideix quin compilador fa servir i executa un assemblador amb el codi resultant.
Tots els compiladors tenen una estructura interna comú: un front end i un back end.
Front end
Els front end varien internament, havent de produir arbres que puguin ser manejats pel back end.
Fins fa poc els arbres no eren totalment independents del processador pel que es volia generar el codi.
Recentment s'han inclòs dos nous formats d'arbre independents de llenguatge: generic i gimple.
Back end
Funcionament
Llenguatges de programació
Fins a la versió 4.0, el compilador estàndard inclou el següent:
- Ada (GCC per a Ada o GNAT)
- C
- C++ (GCC for C++ o G++)
- Fortran (GCC per a Fortran o GFortran)
- Java (GCC per a Java o GCJ)
- Objective-C
- Go
- D
- BRIG (HSAIL)
El front end per G77 es va reemplaçar pel del nou GFortran que suporta Fortran 95. També existeixen front end per Pascal, Modula-2, Modula-3, Mercury, VHDL, PL/I i Objective-C++.
Arquitectures
Desenvolupament
El GCC va ser llençat per Richard Stallman el març de l'any 1987 sota el nom de GNU C Compiler. Inicialment, només soportava llenguatge C. Posteriorment, al decembre del mateix any, va ser ampliat per poder compilar C++. Al llarg del temps es van anar afegint altres llenguatges de programació, com ara Fortran, Ada, Java, entre altres.
Referències
![]() |
Aquest article té bibliografia, però no se sap quina referència verifica cada part. Podeu millorar aquest article assignant cadascuna d'aquestes obres a frases o paràgrafs concrets. |
- Richard M. Stallman: Using and Porting the GNU Compiler Collection, Free Software Foundation, ISBN 0-595-10035-X
- Richard M. Stallman: Using Gcc: The Gnu Compiler Collection Reference, Free Software Foundation, ISBN 1-882114-39-6
- Brian J. Gough: An Introduction to GCC, Network Theory Ltd., ISBN 0-9541617-9-3
Bibliografia
- Arthur Griffith, GCC: The Complete Reference. McGrawHill/Osborne. ISBN 0-07-222405-3.
- Brian J. Gough, Richard M. Stallman, An Introduction to GCC: for the GNU Compilers GCC and G++ . ISBN 978-0954161798.
Enllaços externs
- Manual (anglès)
- GCC weekly news summary (anglès)
- Building and Testing gcc/glibc cross toolchains (anglès)
- Wendling's overview of trees (anglès)
- GCC Wiki (anglès)
- Article "Linux C and C++ Compilers - A comparison via benchmarks on Opteron and Pentium" de Scott Robert Ladd (anglès)