Colección de compiladores GNU | |
---|---|
Tipo de | compilador |
Desarrollador | Proyecto GNU |
Escrito en | C++ |
Sistema operativo | GNU/Linux [5] y BSD [6] |
Primera edición | 23 de mayo de 1987 [1] |
plataforma de hardware | multiplataforma |
ultima versión |
|
Versión de prueba |
|
Licencia | GNU GPL 3 |
Sitio web | gcc.gnu.org _ |
Archivos multimedia en Wikimedia Commons |
GNU Compiler Collection (comúnmente abreviado como GCC ) es una colección de compiladores para varios lenguajes de programación desarrollados como parte del proyecto GNU . GCC es software libre , distribuido entre otros por la Free Software Foundation (FSF) bajo los términos de GNU GPL y GNU LGPL , y es un componente clave de la cadena de herramientas GNU . Se utiliza como compilador estándar para sistemas operativos similares a UNIX gratuitos .
Originalmente llamado GNU C Compiler , solo soportaba el lenguaje C. Posteriormente , GCC se amplió para compilar códigos fuente en lenguajes de programación como C++ , Objective-C , Java , Fortran , Ada , Go , GAS y D.
Desde la versión 4.2.2, GCC cambió a la licencia GPLv3 .
GCC fue iniciado por Richard Stallman , quien implementó la primera versión de GCC en 1985 en un dialecto no estándar y no portátil de Pascal ; el compilador fue posteriormente reescrito en C por Leonard Tower y Richard Stallman [7] y lanzado en 1987 [8] como un compilador para el proyecto GNU, que en sí mismo era software libre. El desarrollo de GCC está supervisado por la Free Software Foundation [9] .
Actualmente, GCC es mantenido por un grupo de programadores de todo el mundo. GCC es líder en cuanto a la cantidad de procesadores y sistemas operativos que admite.
Como compilador oficial del sistema GNU , GCC también es el compilador maestro para construir una serie de otros sistemas operativos; entre ellos se encuentran varios sabores de Linux y BSD (anteriormente se usa clang llvm actualmente), así como ReactOS , Mac OS X , OpenSolaris , NeXTSTEP , BeOS y Haiku .
GCC a menudo se elige para desarrollar software que necesita ejecutarse en una gran cantidad de plataformas de hardware diferentes. Las diferencias entre los compiladores "nativos" para cada una de las plataformas de hardware generan dificultades para desarrollar código que sería compilado correctamente por diferentes compiladores y, además, cuando se usan diferentes compiladores, los scripts de compilación que deben compilar software para todas las plataformas de hardware se vuelven muy complicados. Al usar GCC para compilar código para diferentes plataformas, se usará el mismo analizador . Por lo tanto, si logró compilar el programa para una de las plataformas de destino, es muy probable que el programa también se compile normalmente para otras plataformas.
El compilador estándar incluye interfaces para idiomas:
La parte frontal de CHILL se agregó anteriormente, pero debido a un soporte insuficiente, se excluyó del conjunto. Antes de la versión 4.0, la interfaz para Fortran era G77, que solo admitía FORTRAN 77. En las nuevas versiones, G77 se eliminó a favor de la nueva interfaz GFortran, que admite Fortran 95.
También hay interfaces de terceros para Pascal , Modula-2 , Modula-3 , Mercury , VHDL y PL/I .
La lista de procesadores compatibles con GCC (para la versión 7.1) incluye
Procesadores menos conocidos admitidos en la versión estándar:
Tipos adicionales de arquitecturas y procesadores compatibles con versiones de GCC pero compatibles con terceros (no la Free Software Foundation):
La interfaz GCC es el estándar para compiladores en la plataforma UNIX. El usuario invoca un programa de control llamado gcc . Interpreta los argumentos de la línea de comandos, determina e inicia sus propios compiladores para el idioma deseado para cada archivo de entrada e inicia el ensamblador y el enlazador si es necesario .
El compilador de cada lenguaje es un programa separado que toma el código fuente y produce una salida en lenguaje ensamblador . Todos los compiladores comparten una estructura interna común: un front-end que analiza y genera un árbol de sintaxis abstracta y un back-end que convierte el árbol a Register Transfer Language (RTL), realiza varias optimizaciones y luego genera un programa en lenguaje ensamblador usando Coincidencia de patrones dependientes de la arquitectura .
Antes de la versión 4.7.2, GCC estaba escrito casi en su totalidad en C , aunque gran parte del front-end de Ada estaba escrito en Ada . Desde el 14 de agosto de 2012, el desarrollo se ha traducido a C++ [15] , la versión 4.8 [16] y posteriores requieren un compilador de C++ que soporte C++ 2003 para su ensamblaje.
La herramienta principal para depurar programas compilados con GCC es el Depurador GNU (gdb). También existen herramientas de depuración altamente especializadas:
La versión 4.2.1 de GCC fue la última versión publicada bajo la versión 2 de la Licencia pública general de GNU . Todas las versiones posteriores tienen licencia GPL versión 3 [17] .
Algunos desarrolladores de OpenBSD , como Theo de Raadt y Otto Moerbeek , han criticado a GCC como "incómodo, con errores, lento y generando código incorrecto" [18] . Debido a esta actitud crítica, y también a la licencia GPL bastante restrictiva (en comparación con BSD) bajo la cual se publica la colección de compiladores, se intentó reemplazar GCC en NetBSD y OpenBSD con otros compiladores, como PCC [19]. . Se está realizando un trabajo similar para reemplazar GCC con Clang en FreeBSD [20] .
Proyecto GNU | ||
---|---|---|
Historia | ||
Licencias |
| |
Software _ |
| |
Alusiones personales | ||
Otros temas |
|
Software gratuito y de código abierto | |
---|---|
Lo principal |
|
Comunidad |
|
Organizaciones |
|
Licencias | |
Problemas | |
Otro |
|
|