Colección del compilador GNU

Colección del compilador GNU Descripción de GCC 11.1.0 compilando la imagen Chicken screenshot.png. Información
Desarrollado por Proyecto GNU
Primera versión 23 de mayo de 1987
Última versión 11,1 (27 de abril de 2021)
Depositar gcc.gnu.org/git
Escrito en C ++
Interfaz Interfaz de línea de comandos
Idiomas de soporte C , C ++ , Objective-C , Fortran , Ada , Go y D
Sistema de explotación Linux , Hurd y Microsoft Windows
Medio ambiente Multiplataforma
Escribe Compilador
Licencia Licencia pública general GNU versión 3
Sitio web gcc.gnu.org

GNU Compiler Collection , abreviado como GCC , es una colección de compiladores creados por el Proyecto GNU . GCC es un software gratuito capaz de compilar varios lenguajes de programación , incluidos C , C ++ , Objective-C , Java , Ada , Fortran y Go .

GCC se utiliza para el desarrollo de la mayoría de software libre. El kernel de Linux depende particularmente de la funcionalidad de GCC.

Presentación

GCC fue diseñado para reemplazar el compilador de C suministrado como estándar en el sistema operativo Unix , que se llama CC. GCC originalmente significaba GNU C Compiler , o el " GNU C Compiler ". Como GCC es muy extensible, se ha agregado soporte para muchos otros lenguajes y el nombre oficial se ha cambiado a GNU Compiler Collection .

En la práctica, la abreviatura GCC se utiliza para nombrar tres entidades ligeramente diferentes:

  1. la Colección completa de compiladores (el "Proyecto GCC");
  2. la parte común a todos los compiladores ("GCC");
  3. el propio compilador de C (la interfaz "gcc", escrita en minúsculas).

Para referirnos específicamente a los compiladores de cada lenguaje, hablamos de:

Hay muchos otros compiladores basados ​​en GCC que no forman parte de la distribución estándar del proyecto GCC.

Extensibilidad por complementos

Desde la versión 4.5 (4.6 y superior), los compiladores de GCC son extensibles a través de complementos ("  complementos  "). Estos deben ser software libre y pueden agregar pases de optimización, pragmas, incorporaciones o atributos (pero no pueden extender la sintaxis aceptada por GCC). Hay algunos complementos para GCC: Mozilla desarrolló Tree Hydra (descontinuado). El complemento gcc python permite extender GCC con scripts de Python, en particular para verificar el código C para Python. MELT es un lenguaje específico, inspirado en Lisp para extender GCC.

Depuración

GCC también tiene una herramienta de depuración, GNU Debugger (gdb). Sin embargo , aunque no forma parte de GCC, se prefiere Valgrind para pruebas más profundas, especialmente para encontrar fugas de memoria .

Portabilidad

GCC se ha adaptado a un número considerable de sistemas operativos (prácticamente todas las variantes de Unix , VMS , Windows y MS-DOS a través de DJGPP ) y microprocesadores ( AMD64 , ARM , DEC Alpha , M68k , MIPS , PowerPC , SPARC , x86 , Hitachi H8 ).

Limitaciones

GCC, para el lenguaje C, no admite identificadores Unicode .

Historia

Richard Stallman comienza su desarrollo con el lenguaje de programación Pastel , un "dialecto" no portátil de Pascal . Por tanto, se puede utilizar una primera versión deJunio ​​de 1984. Este lenguaje está parcialmente inspirado en el compilador Pastel , pero también en el compilador portátil de la Universidad de Arizona .

Escribió un nuevo compilador ANSI C a partir de la primavera de 1986, luego, con la ayuda de Len Tower y bajo los auspicios de la Free Software Foundation , distribuyó una primera versión beta en22 de marzo de 1987y la primera versión estable dos meses después. A finales de la década de 1980, GCC ya apoyaba casi una docena de arquitecturas; Michael Tiemann entonces parece ser el más activo con seis puertos realizados por su cuenta. Incluso se le atribuye el soporte nativo para el lenguaje C ++ desde finales de 1987, lo que convierte al compilador GNU en el primero en admitir este lenguaje. Michael Tiemann abandonó gradualmente el proyecto a principios de la década de 1990 debido a la falta de tiempo debido a sus actividades dentro de la empresa Cygnus Solutions .

En 1992 , la versión 2.0 trajo, además de numerosas optimizaciones, soporte estable para el lenguaje C ++. El proyecto parece estar entrando en una nueva era comúnmente llamada "  los años Cygnus  ". Este período comienza con un proceso de transición de la versión 1.42 a la nueva versión.

En 1997 , un grupo de desarrolladores encontró que el modelo de desarrollo era lento y no muy propicio para mejoras, por lo que decidieron bifurcar el proyecto y lo llamaron EGCS (para "  Sistema de compilación GNU experimental / mejorado  "). Tras las muchas mejoras realizadas, EGCS y GCC se unieron en abril de 1999 , la primera versión publicada es la 2.95.

GCC sigue de cerca el desarrollo de la estandarización del lenguaje y, a veces, incluso lo precede; por tanto, algunas de las funcionalidades del estándar C99 ya estaban presentes antes de la publicación oficial.

GCC es hoy en día el compilador más utilizado en la comunidad de software libre y es el compilador de muchos sistemas operativos, como GNU / Linux , BSD , Mac OS X , NeXTSTEP o incluso BeOS / Haiku .

Versiones

Las versiones son establecidas por el Comité Directivo de GCC . La versión 4 compila Fortran 95 a petición de un gran número de usuarios científicos. De hecho, es en este lenguaje donde se intercambian la mayoría de las bibliotecas fuente y subrutinas científicas actuales  ; Linux está muy presente en los laboratorios. Desde la versión 5, a través de OpenACC , se ha mejorado la compatibilidad con el lenguaje Fortran y la versión 6 se ha mejorado considerablemente. A principios de 2021, GFortran 10.2 implementó casi por completo el estándar Fortran 2008 y alrededor del 20% del estándar Fortran 2018.

Estas son las fechas de lanzamiento de las últimas versiones principales:

Versión Fecha de lanzamiento
3,0 18 de junio de 2001
3.1 15 de mayo de 2002
3.2 14 de agosto de 2002
3.3 13 de mayo de 2003
3.4 18 de abril de 2004
3.4.6 6 de marzo de 2006
4.0 20 de abril de 2005
4.0.4 31 de enero de 2007
4.1 28 de febrero de 2006
4.1.2 13 de febrero de 2007
4.2 13 de mayo de 2007
4.2.4 19 de mayo de 2008
4.3 5 de marzo de 2008
4.3.5 22 de mayo de 2010
4.4 21 de abril de 2009
4.4.5 1 er de octubre de 2010
4.5 14 de abril de 2010
4.5.1 31 de julio de 2010
4.5.2 16 de diciembre de 2010
4.6 25 de marzo de 2011
4,7 22 de marzo de 2012
4.8 22 de marzo de 2013
4.9 22 de abril de 2014
5.1 22 de abril de 2015
5.2 16 de julio de 2015
5.3 4 de diciembre de 2015
5.4 3 de junio de 2016
6.2 22 agosto 2016
6.3 21 de diciembre de 2016
7.1 2 de mayo de 2017
7.2 14 de agosto de 2017
7.3 25 enero 2018
8.1 2 de mayo de 2018
8.2 14 de julio de 2018
8.3 22 de febrero de 2019
9.1 25 de abril de 2019
9.2 12 de agosto de 2019
9.3 12 de marzo de 2020
10.1 7 de mayo de 2020

Sintaxis

La sintaxis básica utilizada por los compiladores de GCC es:

gcc fichierSource.c -o binaire

Para usar bibliotecas , la sintaxis es la siguiente:

gcc fichierSource.c -o binaire -l''bibliothèque''

Muchas opciones (pasadas como parámetro) le permiten actuar sobre la compilación. GCC se usa a menudo en archivos MAKE por el programa make .

Las opciones particularmente útiles son -O1 o -O2 para decirle al compilador que optimice, -Wall para solicitar casi todos los mensajes de advertencia, -g para generar información de depuración, -c para generar un archivo objeto (sin edición de enlaces).

Notas y referencias

  1. "  https://www.gnu.org/software/gcc/releases.html  "
  2. GCC 11.1 lanzado  "
  3. (en) "  gfortran - el compilador GNU Fortran, parte de GCC de  " en gcc.gnu.org ,8 de marzo de 2021.
  4. (in) "  GCC Release Series 9 - Changes, New Features, and Fixed - GNU Project - Free Software Foundation (FSF)  " en gcc.gnu.org ,3 de mayo de 2019.
  5. Árbol Hydra .
  6. complemento gcc python .
  7. DERRETIR .
  8. "Nota personal de Richard Stallman - Lisp Machine Manual" , common-lisp.net , junio de 1984.
  9. “RMS Conferencia en KTH (Suecia)” , gnu.org 30 de octubre., 1986
  10. (en) Richard Stallman , versión de prueba beta del compilador GNU C , mod.compilers,22 de marzo de 1987( leer en línea ).
  11. (en) Versiones de GCC  " , en gnu.org ,22 de marzo de 2012(consultado el 22 de marzo de 2012 )
  12. (en) "  Una breve historia de CCG  " en Wiki GCC ,10 de enero de 2008(consultado el 22 de marzo de 2012 )
  13. (en) DV Henkel-Wallace, Un nuevo proyecto para fusionar las bifurcaciones existentes GCC , egcs15 de agosto de 1997( leer en línea ).
  14. (in) Cambios, nuevas funciones y correcciones de la serie de versiones GCC 4
  15. (in) Bienvenido a la casa de GNU Fortran
  16. Pierre Jaquet, “  Premiers pas en Fortran  ” [ [PDF] ], en Jaquet org. , 12 de diciembre de 2015(consultado el 6 de mayo de 2019 )  :“Sigue siendo ampliamente utilizado hoy en día en el mundo científico porque ofrece herramientas muy efectivas para procesar tablas. Aproximadamente la mitad de los programas científicos actuales están escritos en Fortran (dinámica de flujo, química digital, clima, etc.). "
  17. (in) Cambios, nuevas funciones y correcciones de la serie de versiones GCC 5
  18. (in) Cambios, nuevas funciones y correcciones de la serie de versiones CCG 6
  19. (in) Soporte del compilador para Fortran 2008 Standard .
  20. Patrick Guignot, "  Nuevas funciones en GCC 4.0  " , en Linuxfr ,22 de abril de 2005(consultado el 24 de marzo de 2012 ) .
  21. Patrick Guignot, "  Nuevas funciones en GCC 4.1  " , en Linuxfr ,1 st de marzo de de 2006(consultado el 24 de marzo de 2012 ) .
  22. Patrick Guignot, "  GCC 4.2 lanzado  " , en Linuxfr ,17 de mayo de 2007(consultado el 24 de marzo de 2012 ) .
  23. Patrick Guignot, "  Lanzamiento de GCC 4.3  " , en Linuxfr ,10 de marzo de 2008(consultado el 24 de marzo de 2012 ) .
  24. Patrick Guignot, "  Lanzamiento de la versión 4.4 del compilador GCC  " , en Linuxfr ,21 de abril de 2009(consultado el 24 de marzo de 2012 ) .
  25. Patrick Guignot, "  Lanzamiento de GCC 4.5  " , en Linuxfr ,15 de abril de 2010(consultado el 24 de marzo de 2012 ) .
  26. Patrick Guignot, "La  versión 4.6 del compilador GCC está disponible  " , en Linuxfr ,26 de marzo de 2011(consultado el 24 de marzo de 2012 ) .
  27. Patrick Guignot, "  Lanzamiento de la versión 4.7 del compilador GCC  " , en Linuxfr ,22 de marzo de 2012(consultado el 24 de marzo de 2012 ) .
  28. (in) "  GCC 7 Release Series - Changes, New Features, and Fixed - GNU Project - Free Software Foundation (FSF)  " en gcc.gnu.org (consultado el 7 de mayo de 2017 )
  29. (in) "  GCC 7 Release Series - GNU Project - Free Software Foundation (FSF)  " en gcc.gnu.org (consultado el 4 de noviembre de 2017 )
  30. (in) "  GCC 7 Release Series - Changes, New Features, and Fixed - GNU Project - Free Software Foundation (FSF)  " en gcc.gnu.org (consultado el 25 de enero de 2017 )
  31. Frederic Mazué, "  GCC 9.1 liberado con apoyo C ++ 17 y el idioma D  " en programmez.com (consultado el 06 de mayo 2019 )

Ver también

Artículos relacionados

enlaces externos