GCC

GCC
Información sobre la plantilla
109x130
Última versión estable4.6.1 (27 de junio, 2011) [1]
Sitio web
http://gcc.gnu.org/

GCC. Es un compilador para GNU considerado estándar para los Sistemas Operativos derivados de UNIX, de Código abierto o también de Sistemas Operativos propietarios, como Mac OS X. Las siglas GCC significan GNU Compiler Collection (Colección de compiladores GNU). Antes estas siglas de GNU C Compiler (Compilador C GNU). Como su nombre indica es una colección de compiladores y admite diversos lenguajes: C,C++, Objetive C, Chill, Fortran, Ada y Java.

GCC(GNU Compiler Collection )

GCC es parte del proyecto GNU, el cual tiene como objetivo mejorar el compilador usado en los sistemas GNU incluyendo la variante GNU/Linux. El desarrollo de GCC usa un entorno de desarrollo abierto y soporta muchas otras plataformas con el fin de fomentar el uso de un compilador-optimizador de clase global, para atraer muchos equipos de desarrollo, para asegurar 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. 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. El compilador se distribuye bajo la licencia GPL (General Public License) lo que lo hace de libre distribución: se pueden hacer copias de él y regalarlas o venderlas siempre que se incluya el Código fuente (o se indique cómo conseguirlo) y se mantenga la licencia. Existen versiones para prácticamente todos los sistemas operativos. Viene incluido en la mayoría (si no en todas) las distribuciones de GNU/Linux. La versión DOS de este compilador es el DJGPP. En el desarrollo de este compilador participan cientos de voluntarios de todo el mundo.

Historia

La primera versión de GCC se hizo en 1987. Esto fue un avance significativo, siendo el primer portátil de la optimización de compilador de C ANSI publicado como software libre. Desde entonces CCG se ha convertido en una de las herramientas más importantes en el desarrollo de software libre. Una revisión importante del compilador llegó con la serie 2.0 en 1992, que añade la capacidad para compilar C + +. En 1997 una rama experimental del compilador (SLGE) se creó para mejorar la optimización y soporte para C + +. A raíz de este trabajo, egcs fue adoptado como la nueva línea principal de desarrollo del CCG, y estas características se hizo ampliamente disponible en la versión 3.0 de GCC en el 2001. Con el tiempo del CCG se ha ampliado para soportar muchos idiomas, incluyendo Fortran, Ada, Java y Objective-C. Su desarrollo se guía por el comité director del CCG, un grupo compuesto por representantes de las comunidades de usuarios del CCG en la industria, la investigación y la academia.

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

Etapas de compilación

El proceso de Compilación involucra cuatro etapas sucesivas. Para pasar de un Programa fuente escrito por un humano a un Archivo ejecutable es necesario realizar estas cuatro etapas en forma sucesiva. Los comandos Gcc y G++ son capaces de realizar todo el proceso de una sola vez.

Preprocesado

En esta etapa se interpretan las directivas al Preprocesador. Entre otras cosas, las Variables inicializadas con #define son sustituídas en el código por su valor en todos los lugares donde aparece su nombre.

Compilación

La Compilación transforma el Código C en el Lenguaje ensamblador propio del Procesador de nuestra máquina.

Ensamblado

El ensamblado transforma el programa escrito en Lenguaje ensamblador a Código objeto, un Archivo binario en Lenguaje de máquina ejecutable por el Procesador.

Enlazado

Las Funciones de C/C++ incluídas en nuestro Código, tal como printf() en el ejemplo, se encuentran ya compiladas y ensambladas en Bibliotecas existentes en el sistema. Es preciso incorporar de algún modo el Código binario de estas funciones a nuestro ejecutable. En esto consiste la etapa de enlace, donde se reúnen uno o más módulos en código objeto con el código existente en las bibliotecas.

Referencias

  1. Lista de lanzamientos de GCC, consultado 5 de agosto, 2011.

Richard 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-3

Fuentes

GCC, the GNU Compiller Collection