Software de recopilación de compiladores GNU | |
---|---|
Género | Compilador |
Desarrollador | proyecto GNU |
Fecha de la primera versión | 23 de mayo de 1987 |
Ultima versión |
|
Sistema operativo | Multiplataforma |
Idioma | C ++ |
Licencia | GNU GPL ( licencia libre ) |
Sitio web | gcc.gnu.org |
GCC ( GNU Compiler Collection , originalmente GNU C Compiler ) es un compilador multiplataforma creado inicialmente por el fundador de la Free Software Foundation , Richard Matthew Stallman , como parte del Proyecto GNU . Las versiones recientes están incluidas en las principales distribuciones del sistema operativo GNU/Linux , y muchos otros sistemas, mientras que en macOS no viene instalado por defecto, sino que forma parte del paquete Xcode (a partir de la versión 5.0 de Xcode existe otro compilador, llvm que reemplaza completamente a gcc).
Nacido inicialmente como un compilador para el lenguaje C , ahora tiene varios front-end para otros lenguajes, incluidos Java , C ++ , Objective C , Fortran y Ada , y varios back-end que son capaces de generar lenguajes de máquina para muchos. arquitecturas , incluyendo x86 , x86-64 , ARM , IA-64 , PowerPC , s390 , SPARC .
GCC fue creado en 1987 por Richard Stallman como parte del sistema GNU, que necesitaba un compilador que fuera software libre. Su desarrollo fue seguido de cerca por la Free Software Foundation .
En 1997 , un grupo de desarrolladores insatisfechos con la naturaleza cerrada de los desarrollos y su ritmo demasiado lento crearon el proyecto EGCS ( Experimental / Enhanced GNU Compiler System ), que incorporó varias bifurcaciones experimentales en una sola línea de desarrollo, separada de GCC. El desarrollo de EGCS demostró ser suficientemente viable y en abril de 1999 EGCS fue promovido al estado de la versión oficial de GCC. [1] [2]
GCC ahora está siendo desarrollado por programadores de todo el mundo y ha sido portado a más tipos de procesadores y sistemas operativos que cualquier otro compilador.
Además de ser el compilador oficial del sistema GNU , incluidas las variantes de GNU/Linux , GCC ha sido adoptado como compilador principal para crear y desarrollar varios otros sistemas operativos, como varios BSD , macOS , NeXTSTEP y BeOS y DOS a través de su Puerto DJGPP.
La versión estándar del compilador incluye las interfaces para los idiomas:
Entre los procesadores compatibles con GCC (en la versión 4.1) se encuentran:
En algunas versiones estándar, también se admiten procesadores menos conocidos, incluidos A29K , ARC , Atmel AVR , C4x , CRIS , D30V , DSP16xx , FR-30 , FR-V , Intel i960 , IP2000 , M32R , 68HC11 , MCORE , MMIX , MN10200 , MN10300 , NS32K , ROMP , Stormy16 , V850 y Xtensa . Otros procesadores, como D10V , PDP-10 , MicroBlaze y Z8000 , han sido compatibles con versiones de GCC desarrolladas por separado de la versión de Free Software Foundation.
El SDCC ( Small Devices C Compiler ) es un puerto de código abierto para los microcontroladores de las familias Z80 , 8051 , 68HC11 únicamente , Pic se ha separado del proyecto GCC para optimizar mejor el trabajo de los microcontroladores , donde una gran eficiencia del compilador y al mismo tiempo vive en un entorno muy pobre en recursos RAM y ROM , con interfaces personalizadas y dotado de registros especiales incompatibles con el procesamiento.
A pesar de la pequeña cantidad de objetivos disponibles, el compilador tiene una calificación alta y en la mayoría de las situaciones brinda mejores resultados que los sistemas de desarrollo profesional pagados.
Está disponible en el repositorio de Synaptic .
GCC, como compilador, tiene como objetivo principal la traducción del código fuente en código de máquina ejecutable .
Por ejemplo, para compilar un archivo de código fuente escrito en C, puede ejecutar gcc dándole el archivo deseado como entrada. Hay una gran cantidad de parámetros que se pueden pasar al compilador para administrar los diversos aspectos y detalles del proceso de generación de código; el único obligatorio es el nombre del archivo a rellenar.
Un ejemplo elemental de compilación es el comando
gcc principal.cque le indica al compilador que lea el archivo main.c( .ces la extensión estándar de los archivos que contienen código C ) y lo compile. Dado que no se especificó ningún nombre para el archivo de salida mediante el parámetro -o, se llama al archivo ejecutable a.out.
La compilación se lleva a cabo en tres fases: