fbpx
Wikipedia

GNU Compiler Collection

El GNU Compiler Collection (colección de compiladores GNU) es un conjunto de compiladores creados por el proyecto GNU. GCC es software libre y lo distribuye la Free Software Foundation (FSF) bajo la licencia general pública GPL.

GNU Compiler Collection
Parte de GNU toolchain

GCC invocado desde la línea de comandos en Debian
Información general
Tipo de programa Compilador
Desarrollador Proyecto GNU
Modelo de desarrollo Software libre
Lanzamiento inicial 23 de mayo de 1987[1]
Licencia GPLv3
Información técnica
Programado en C, C++
Plataformas admitidas multiplataforma
Interfaz gráfica predeterminada interfaz de línea de comandos
Versiones
Última versión estable 11.1.0 (info) 27 de abril de 2021 (3 meses y 10 días)
Última versión en pruebas 0.9
22 de marzo de 1987
Enlaces
Sitio web oficial
Repositorio de código
Seguimiento de errores

Estos compiladores se consideran estándar para los sistemas operativos derivados de UNIX, de código abierto y también de propietarios, como Mac OS X. GCC requiere el conjunto de aplicaciones conocido como binutils para realizar tareas como identificar archivos objeto u obtener su tamaño para copiarlos, traducirlos o crear listas, enlazarlos, o quitarles símbolos innecesarios.

Originalmente GCC significaba GNU C Compiler (compilador GNU de C), porque solo compilaba el lenguaje C. Posteriormente se extendió para compilar C++, Fortran, Ada y otros.

Objetivo

GCC es parte del proyecto GNU, y tiene como objetivo mejorar el compilador usado en todos los sistemas GNU, incluyendo la variante GNU/Linux. El desarrollo de GCC usa un entorno de desarrollo abierto y soporta muchas plataformas con el fin de fomentar el uso de un compilador-optimizador de clase global, que pueda atraer muchos equipos de desarrollo, y asegure que GCC y los sistemas GNU funcionen en diferentes arquitecturas y diferentes entornos, y más aún, para extender y mejorar las características de GCC.

Historia

Richard Stallman comenzó a escribir GCC en 1985. Añadió elementos extendiendo un compilador preexistente de C. El compilador originalmente compilaba Pastel, un dialecto extendido, no portable de Pascal, y estaba escrito en el propio Pastel. Fue reescrito en C por Len Tower y Stallman,[2]​ y publicado en 1987[3]​ como el compilador del Proyecto GNU, para tener un compilador disponible que fuera software libre. Su desarrollo fue supervisado por la Free Software Foundation (FSF).[4]

En 1991, GCC 1.x había logrado un punto de estabilidad, pero limitaciones en la arquitectura impedían muchas mejoras deseadas, así que la FSF empezó a trabajar en GCC 2.x.

Como GCC era software libre, había programadores que querían trabajar en otras direcciones, por ejemplo, escribiendo interfaces para otros lenguajes distintos de C, estos fueron libres de desarrollar sus propias bifurcaciones del compilador. Múltiples bifurcaciones trajeron ineficiencia e inmanejabilidad, sin embargo, la dificultad de producir código que fuera aceptado por el proyecto oficial de GCC era altamente frustrante para muchos, puesto que la FSF guardaba un férreo control en qué era añadido a la versión oficial de GCC 2.x. Esto hizo que GCC fuera citado como ejemplo del modelo de desarrollo "catedral" de software mencionado en el ensayo de Eric S. Raymond titulado La catedral y el bazar.

Desde la publicación de la versión 4.4. de BSD en 1994, GCC se convirtió en el compilador por defecto de los sistemas BSD.

Lenguajes

En su versión 4.6 incluye front ends para C (gcc), C++ (g++), Java (gcj), Ada (GNAT), Objective-C (gobjc), Objective-C++ (gobjc++) y Fortran (gfortran).[5]​ También está disponible, aunque no de forma estándar, soporte para Go (gccgo), Modula-2, Modula-3, Pascal (gpc), PL/I, D (gdc), Mercury, y VHDL (ghdl).[6]

Arquitecturas

En la versión 4.2.3 se incluye soporte para:

También hay soporte para arquitecturas menos conocidas: A29K, Atmel AVR, C4x, D30V, DSP16xx, FR-30, FR-V, Intel i960, IP2000, MN10200, NS32K y ROMP.

Se ha dado soporte para procesadores adicionales, como D10V, PDP-10, y Z8000 en versiones mantenidas separadas de la versión de la FSF.

Estructura

La interfaz exterior de GCC es generalmente estándar para un sistema UNIX. Los usuarios llaman un programa controlador llamado gcc, que interpreta los argumentos dados, decide qué compilador usar para cada archivo y ejecuta el ensamblador con el código resultante, después posiblemente ejecuta el enlazador para producir un programa completo.

Cada uno de los compiladores es un programa independiente que toma como entrada código fuente y produce código en ensamblador. Todos ellos tienen una estructura interna común: un front end por lenguaje que procesa el lenguaje y produce un árbol de sintaxis y un back end, que convierte esos árboles al lenguaje RTL (lenguaje de transferencia de registros) de GCC, luego realiza varias optimizaciones y produce el ensamblador utilizando un reconocimiento de patrones específico para la arquitectura, originalmente basado en un algoritmo de Jack Davidson y Chris Fraser.

Casi todo GCC está escrito en C, aunque gran parte del front end de Ada está escrito en Ada. El 30 de mayo de 2010 se anunció que se comenzará a utilizar C++ en el desarrollo de GCC.[7]

Front ends

Los front ends varían internamente, teniendo que producir árboles que puedan ser manejados por el back end. Todos los analizadores son analizadores recursivos descendentes y fueron escritos manualmente, no generados automáticamente.

Hasta hace poco, el árbol de representación de programa no era totalmente independiente del procesador para el que se quería generar el código.

Recientemente se han incluido dos nuevas formas de árbol independientes del lenguaje. Estos nuevos formatos son llamados GENERIC y GIMPLE. El análisis ahora es realizado creando árboles temporales dependientes del lenguaje y convirtiéndolos a GENERIC. El gimplifier convierte esto a GIMPLE, que es el lenguaje común para un gran número de optimizaciones independientes de la arquitectura y del lenguaje.

La optimización en árboles no entra en lo que la mayoría de los desarrolladores de compiladores consideran trabajo del front end, ya que no es dependiente del lenguaje y no involucra el análisis. Los desarrolladores de GCC han dado a esta parte del compilador el nombre de middle end. Las optimizaciones incluyen eliminación de código que nunca se ejecuta, eliminación parcial de redundancia, redundancia a la hora de evaluar expresiones... Actualmente se está trabajando en optimizaciones basadas en dependencia de arreglos.

Back end

El comportamiento del backend está parcialmente especificado por el preprocesador de macros específicas a la arquitectura objetivo, por ejemplo para definir la posición de los bits más significativos, tamaño de palabra, convención para llamadas, etc. El back end utiliza estas para la generación de RTL, aunque en GCC este es independiente del procesador y la secuencia inicial de instrucciones abstractas es adaptada a la arquitectura objetivo.

IDEs Compatibles

La mayoría de Entornos de desarrollo integrado escritos para GNU/Linux y algunos otros sistemas operativos soportan GCC. Estos incluyen:

Referencias

  1. «GCC Releases». GNU Project. Consultado el 30 de agosto de 2009. 
  2. Stallman, Richard M. (febrero de 1986). «GNU Status». GNU's Bulletin (Free Software Foundation) 1 (1). Consultado el 26 de septiembre de 2006. 
  3. Tower, Leonard (1987) "GNU C compiler beta test release," comp.lang.misc USENET newsgroup; see also http://gcc.gnu.org/releases.html#timeline
  4. Stallman, Richard M. (2001) "Contributors to GCC," en Using and Porting the GNU Compiler Collection (GCC) for gcc version 2.95 (Cambridge, Mass.: Free Software Foundation)
  5. "gccgo language contribution accepted" el 10 de octubre de 2017 en Wayback Machine., gmane.org, Retrieved January 26, 2010.
  6. GCC Front Ends el 9 de febrero de 2014 en Wayback Machine., GCC.org, Retrieved May 11, 2008.
  7. Using C++ in GCC is OK

Bibliografía

Véase también

Enlaces externos

  • Sitio web oficial de GCC
  • Manuales y documentación del GCC
  • Compilando y probando gcc/glibc
  •   Datos: Q178940
  •   Multimedia: GNU Compiler Collection

compiler, collection, colección, compiladores, conjunto, compiladores, creados, proyecto, software, libre, distribuye, free, software, foundation, bajo, licencia, general, pública, parte, toolchaingcc, invocado, desde, línea, comandos, debianinformación, gener. El GNU Compiler Collection coleccion de compiladores GNU es un conjunto de compiladores creados por el proyecto GNU GCC es software libre y lo distribuye la Free Software Foundation FSF bajo la licencia general publica GPL GNU Compiler CollectionParte de GNU toolchainGCC invocado desde la linea de comandos en DebianInformacion generalTipo de programaCompiladorDesarrolladorProyecto GNUModelo de desarrolloSoftware libreLanzamiento inicial23 de mayo de 1987 1 LicenciaGPLv3Informacion tecnicaProgramado enC C Plataformas admitidasmultiplataformaInterfaz grafica predeterminadainterfaz de linea de comandosVersionesUltima version estable11 1 0 info 27 de abril de 2021 3 meses y 10 dias Ultima version en pruebas0 922 de marzo de 1987EnlacesSitio web oficial Repositorio de codigo Seguimiento de errores editar datos en Wikidata Estos compiladores se consideran estandar para los sistemas operativos derivados de UNIX de codigo abierto y tambien de propietarios como Mac OS X GCC requiere el conjunto de aplicaciones conocido como binutils para realizar tareas como identificar archivos objeto u obtener su tamano para copiarlos traducirlos o crear listas enlazarlos o quitarles simbolos innecesarios Originalmente GCC significaba GNU C Compiler compilador GNU de C porque solo compilaba el lenguaje C Posteriormente se extendio para compilar C Fortran Ada y otros Indice 1 Objetivo 2 Historia 3 Lenguajes 4 Arquitecturas 5 Estructura 5 1 Front ends 5 2 Back end 6 IDEs Compatibles 7 Referencias 8 Bibliografia 9 Vease tambien 10 Enlaces externosObjetivo EditarGCC es parte del proyecto GNU y tiene como objetivo mejorar el compilador usado en todos los sistemas GNU incluyendo la variante GNU Linux El desarrollo de GCC usa un entorno de desarrollo abierto y soporta muchas plataformas con el fin de fomentar el uso de un compilador optimizador de clase global que pueda atraer muchos equipos de desarrollo y asegure que GCC y los sistemas GNU funcionen en diferentes arquitecturas y diferentes entornos y mas aun para extender y mejorar las caracteristicas de GCC Historia EditarRichard Stallman comenzo a escribir GCC en 1985 Anadio elementos extendiendo un compilador preexistente de C El compilador originalmente compilaba Pastel un dialecto extendido no portable de Pascal y estaba escrito en el propio Pastel Fue reescrito en C por Len Tower y Stallman 2 y publicado en 1987 3 como el compilador del Proyecto GNU para tener un compilador disponible que fuera software libre Su desarrollo fue supervisado por la Free Software Foundation FSF 4 En 1991 GCC 1 x habia logrado un punto de estabilidad pero limitaciones en la arquitectura impedian muchas mejoras deseadas asi que la FSF empezo a trabajar en GCC 2 x Como GCC era software libre habia programadores que querian trabajar en otras direcciones por ejemplo escribiendo interfaces para otros lenguajes distintos de C estos fueron libres de desarrollar sus propias bifurcaciones del compilador Multiples bifurcaciones trajeron ineficiencia e inmanejabilidad sin embargo la dificultad de producir codigo que fuera aceptado por el proyecto oficial de GCC era altamente frustrante para muchos puesto que la FSF guardaba un ferreo control en que era anadido a la version oficial de GCC 2 x Esto hizo que GCC fuera citado como ejemplo del modelo de desarrollo catedral de software mencionado en el ensayo de Eric S Raymond titulado La catedral y el bazar Desde la publicacion de la version 4 4 de BSD en 1994 GCC se convirtio en el compilador por defecto de los sistemas BSD Lenguajes EditarEn su version 4 6 incluye front ends para C gcc C g Java gcj Ada GNAT Objective C gobjc Objective C gobjc y Fortran gfortran 5 Tambien esta disponible aunque no de forma estandar soporte para Go gccgo Modula 2 Modula 3 Pascal gpc PL I D gdc Mercury y VHDL ghdl 6 Arquitecturas EditarEn la version 4 2 3 se incluye soporte para ARC ARM Blackfin CRIS CRX Darwin DEC Alpha DEC Alpha VMS FRV GNU Linux H8 300 H8 500 HPPA IA 64 Itanium M32C M32R D MIPS MMIX MN10300 Morpho MT Motorola M680x0 Motorola M68hc1x Motorola 88000 PA RISC PDP 11 PowerPC RS 6000 Score SPARC SuperH System 370 System 390 System V TMS320C3x C4x V850 VAX x86 x86 64 Xstormy16 Xtensa zSeries Tambien hay soporte para arquitecturas menos conocidas A29K Atmel AVR C4x D30V DSP16xx FR 30 FR V Intel i960 IP2000 MN10200 NS32K y ROMP Se ha dado soporte para procesadores adicionales como D10V PDP 10 y Z8000 en versiones mantenidas separadas de la version de la FSF Estructura EditarLa interfaz exterior de GCC es generalmente estandar para un sistema UNIX Los usuarios llaman un programa controlador llamado gcc que interpreta los argumentos dados decide que compilador usar para cada archivo y ejecuta el ensamblador con el codigo resultante despues posiblemente ejecuta el enlazador para producir un programa completo Cada uno de los compiladores es un programa independiente que toma como entrada codigo fuente y produce codigo en ensamblador Todos ellos tienen una estructura interna comun un front end por lenguaje que procesa el lenguaje y produce un arbol de sintaxis y un back end que convierte esos arboles al lenguaje RTL lenguaje de transferencia de registros de GCC luego realiza varias optimizaciones y produce el ensamblador utilizando un reconocimiento de patrones especifico para la arquitectura originalmente basado en un algoritmo de Jack Davidson y Chris Fraser Casi todo GCC esta escrito en C aunque gran parte del front end de Ada esta escrito en Ada El 30 de mayo de 2010 se anuncio que se comenzara a utilizar C en el desarrollo de GCC 7 Front ends Editar Los front ends varian internamente teniendo que producir arboles que puedan ser manejados por el back end Todos los analizadores son analizadores recursivos descendentes y fueron escritos manualmente no generados automaticamente Hasta hace poco el arbol de representacion de programa no era totalmente independiente del procesador para el que se queria generar el codigo Recientemente se han incluido dos nuevas formas de arbol independientes del lenguaje Estos nuevos formatos son llamados GENERIC y GIMPLE El analisis ahora es realizado creando arboles temporales dependientes del lenguaje y convirtiendolos a GENERIC El gimplifier convierte esto a GIMPLE que es el lenguaje comun para un gran numero de optimizaciones independientes de la arquitectura y del lenguaje La optimizacion en arboles no entra en lo que la mayoria de los desarrolladores de compiladores consideran trabajo del front end ya que no es dependiente del lenguaje y no involucra el analisis Los desarrolladores de GCC han dado a esta parte del compilador el nombre de middle end Las optimizaciones incluyen eliminacion de codigo que nunca se ejecuta eliminacion parcial de redundancia redundancia a la hora de evaluar expresiones Actualmente se esta trabajando en optimizaciones basadas en dependencia de arreglos Back end Editar El comportamiento del backend esta parcialmente especificado por el preprocesador de macros especificas a la arquitectura objetivo por ejemplo para definir la posicion de los bits mas significativos tamano de palabra convencion para llamadas etc El back end utiliza estas para la generacion de RTL aunque en GCC este es independiente del procesador y la secuencia inicial de instrucciones abstractas es adaptada a la arquitectura objetivo IDEs Compatibles EditarLa mayoria de Entornos de desarrollo integrado escritos para GNU Linux y algunos otros sistemas operativos soportan GCC Estos incluyen Anjuta Code Blocks CodeLite Dev C Eclipse geany KDevelop NetBeans Qt Creator Xcode Visual Studio Code ZinjaiReferencias Editar GCC Releases GNU Project Consultado el 30 de agosto de 2009 Stallman Richard M febrero de 1986 GNU Status GNU s Bulletin Free Software Foundation 1 1 Consultado el 26 de septiembre de 2006 Tower Leonard 1987 GNU C compiler beta test release comp lang misc USENET newsgroup see also http gcc gnu org releases html timeline Stallman Richard M 2001 Contributors to GCC en Using and Porting the GNU Compiler Collection GCC for gcc version 2 95 Cambridge Mass Free Software Foundation gccgo language contribution accepted Archivado el 10 de octubre de 2017 en Wayback Machine gmane org Retrieved January 26 2010 GCC Front Ends Archivado el 9 de febrero de 2014 en Wayback Machine GCC org Retrieved May 11 2008 Using C in GCC is OKBibliografia EditarRichard 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 3Vease tambien Editar Portal Software libre Contenido relacionado con Software libre GCC incluye Boehm GC un colector de basura conservador para C C GCC XML LLVM MinGW Cygwin g Enlaces externos EditarSitio web oficial de GCC Manuales y documentacion del GCC Compilando y probando gcc glibc GCC Wiki Datos Q178940 Multimedia GNU Compiler CollectionObtenido de https es wikipedia org w index php title GNU Compiler Collection amp oldid 135207999, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos