Colección de compiladores GNU

Software de recopilación de compiladores GNU
GéneroCompilador
Desarrolladorproyecto GNU
Fecha de la primera versión23 de mayo de 1987
Ultima versión
  • 11.3 (21 de abril de 2022)
  • 10.4 (28 de junio de 2022)
  • 12.2 (19 de agosto de 2022)
Sistema operativoMultiplataforma
IdiomaC ++
LicenciaGNU GPL
( licencia libre )
Sitio webgcc.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 .

Historia

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.

Idiomas

La versión estándar del compilador incluye las interfaces para los idiomas:

Arquitecturas

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.

SDCC (compilador C de dispositivo pequeño)

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 .

Uso y funcionamiento

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.c

que 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:

  1. el archivo a compilar es manejado por el preprocesador , que analiza las directivas escritas para el compilador (definidas en algunas líneas del código, generalmente ubicadas en la parte superior del archivo y precedidas por el carácter #). Si se ejecuta con el parámetro -Egcc solo realiza este paso, entregando como salida el resultado de las actividades del preprocesador;
  2. en la segunda fase, el archivo da lugar a un nuevo archivo objeto , que aún no es ejecutable;
  3. en este punto entra en funcionamiento el enlazador que produce un solo archivo ejecutable , que contiene todo, uniendo todos los archivos objeto y los archivos de biblioteca . Si no desea incrustar el código de la biblioteca en el archivo ejecutable, puede utilizar la vinculación dinámica .

Notas

  1. ^ Noticias y anuncios del CCG
  2. ^ Preguntas frecuentes sobre el compilador Pentium - ¿Qué es/era EGCS?

Otros proyectos

Enlaces externos