Diferencia entre revisiones de «GCC»

m (Compilador para GNU trasladada a GCC)
Línea 1: Línea 1:
{{Software
+
<p><span class="fck_mw_template">{{SoftwarefckLR|nombre=GCC fckLR|logo=Gcc_logo.jpgfckLR|descripcion=Compilador de codigo librefckLR|creador=Proyecto GNUfckLR|fecha_de_creacion= 23 de mayo de 1987fckLR|versiones= Estable 4.4fckLR|sitio_web=http://www.gcc.gnu.org/}}</span>
|nombre=GCC  
+
</p><p><b>GCC</b>, es un compilador para <a _fcknotitle="true" href="GNU">GNU</a> considerado estándar para los <a _fcknotitle="true" href="Sistemas operativos">Sistemas operativos</a> derivados de <a _fcknotitle="true" href="UNIX">UNIX</a>, de <a _fcknotitle="true" href="Código abierto">Código abierto</a> o también de <a _fcknotitle="true" href="Sistemas operativos propietarios">Sistemas operativos propietarios</a>, como Mac OS X.&nbsp; <br />  
|logo=Gcclogo.PNG
+
</p><p>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: <a _fcknotitle="true" href="C">C</a>,<a _fcknotitle="true" href="C++">C++</a>, <a _fcknotitle="true" href="Objetive C">Objetive C</a>, <a _fcknotitle="true" href="Chill">Chill</a>, <a _fcknotitle="true" href="Fortran">Fortran</a>, <a _fcknotitle="true" href="Ada">Ada</a> y <a _fcknotitle="true" href="Java">Java</a>.  
|descripcion=Compilador de codigo libre
+
</p><p>GCC es parte del proyecto GNU, el cual tiene como objetivo mejorar el compilador usado en los sistemas GNU incluyendo la variante <a _fcknotitle="true" href="GNU/Linux">GNU/Linux</a>. 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.  
|creador=Proyecto GNU
+
</p><p>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.  
|fecha_de_creacion= 23 de mayo de 1987
+
</p><p>El compilador se distribuye bajo la licencia <a _fcknotitle="true" href="GPL">GPL</a> (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 <a _fcknotitle="true" href="Código fuente">Código fuente</a> (o se indique cómo conseguirlo) y se mantenga la licencia.  
|versiones= Estable 4.4
+
</p><p>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 <a _fcknotitle="true" href="DJGPP">DJGPP</a>. En el desarrollo de este compilador participan cientos de voluntarios de todo el mundo.  
|sitio_web=http://www.gcc.gnu.org/}}  
+
</p>
 
+
<h2> Historia  </h2>
'''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.&nbsp; <br>  
+
<p>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 <a _fcknotitle="true" href="C">C</a> ANSI publicado como <a _fcknotitle="true" href="Software libre">Software libre</a>. Desde entonces CCG se ha convertido en una de las herramientas más importantes en el desarrollo de software libre.  
 
+
</p><p>Una revisión importante del compilador llegó con la serie 2.0 en 1992, que añade la capacidad para compilar <a _fcknotitle="true" href="C + +">C + +</a>. 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.  
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]].  
+
</p><p>Con el tiempo del CCG se ha ampliado para soportar muchos idiomas, incluyendo <a _fcknotitle="true" href="Fortran">Fortran</a>, <a _fcknotitle="true" href="Ada">Ada</a>, <a _fcknotitle="true" href="Java">Java</a> y <a _fcknotitle="true" href="Objective-C">Objective-C</a>. 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.  
 
+
</p>
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.  
+
<h2> Estructura  </h2>
 
+
<p>La interfaz exterior de GCC es generalmente estándar para un sistema <a _fcknotitle="true" href="UNIX">UNIX</a>. 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.  
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.  
+
</p><p>Cada uno de los compiladores es un programa independiente que toma como entrada <a _fcknotitle="true" href="Código fuente">Código fuente</a> y produce código en <a _fcknotitle="true" href="Ensamblador">Ensamblador</a>. Todos ellos tienen una estructura interna común: un <a _fcknotitle="true" href="Front end">Front end</a> por lenguaje que procesa el lenguaje y produce un árbol de sintaxis y un <a _fcknotitle="true" href="Back end">Back end</a>, que convierte esos árboles al <a _fcknotitle="true" href="Lenguaje RTL">Lenguaje RTL</a> (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 <a _fcknotitle="true" href="Algoritmo">Algoritmo</a> de <a _fcknotitle="true" href="Jack Davidson">Jack Davidson</a> y <a _fcknotitle="true" href="Chris Fraser">Chris Fraser</a>.  
 
+
</p><p>Casi todo GCC está escrito en <a _fcknotitle="true" href="C">C</a>, aunque gran parte del front end de <a _fcknotitle="true" href="Ada">Ada</a> está escrito en Ada.  
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.  
+
</p>
 
+
<h2> Etapas de compilación  </h2>
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.  
+
<p>El proceso de <a _fcknotitle="true" href="Compilación">Compilación</a> involucra cuatro etapas sucesivas. Para pasar de un <a _fcknotitle="true" href="Programa fuente">Programa fuente</a> escrito por un humano a un <a _fcknotitle="true" href="Archivo ejecutable">Archivo ejecutable</a> es necesario realizar estas cuatro etapas en forma sucesiva. Los <a _fcknotitle="true" href="Comandos">Comandos</a> gcc y <a _fcknotitle="true" href="G++">G++</a> son capaces de realizar todo el proceso de una sola vez.  
 
+
</p>
== Historia  ==
+
<h3> Preprocesado  </h3>
 
+
<p>En esta etapa se interpretan las directivas al <a _fcknotitle="true" href="Preprocesador">Preprocesador</a>. Entre otras cosas, las <a _fcknotitle="true" href="Variables">Variables</a> inicializadas con #define son sustituídas en el código por su valor en todos los lugares donde aparece su nombre.  
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.  
+
</p>
 
+
<h3> Compilación  </h3>
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.  
+
<p>La <a _fcknotitle="true" href="Compilación">Compilación</a> transforma el <a _fcknotitle="true" href="Código C">Código C</a> en el <a _fcknotitle="true" href="Lenguaje ensamblador">Lenguaje ensamblador</a> propio del <a _fcknotitle="true" href="Procesador">Procesador</a> de nuestra máquina.  
 
+
</p>
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.  
+
<h3> Ensamblado  </h3>
 
+
<p>El ensamblado transforma el programa escrito en <a _fcknotitle="true" href="Lenguaje ensamblador">Lenguaje ensamblador</a> a <a _fcknotitle="true" href="Código objeto">Código objeto</a>, un <a _fcknotitle="true" href="Archivo binario">Archivo binario</a> en <a _fcknotitle="true" href="Lenguaje de máquina">Lenguaje de máquina</a> ejecutable por el <a _fcknotitle="true" href="Procesador">Procesador</a>.
== Estructura  ==
+
</p>
 
+
<h3> Enlazado  </h3>
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.  
+
<p>Las <a _fcknotitle="true" href="Funciones">Funciones</a> de <a _fcknotitle="true" href="C/C++">C/C++</a> incluídas en nuestro <a _fcknotitle="true" href="Código">Código</a>, tal como printf() en el ejemplo, se encuentran ya compiladas y ensambladas en <a _fcknotitle="true" href="Bibliotecas">Bibliotecas</a> existentes en el sistema. Es preciso incorporar de algún modo el <a _fcknotitle="true" href="Código binario">Código binario</a> 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.  
 
+
</p>
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]].  
+
<h2> Referencias </h2>
 
+
<ul><li>Richard M. Stallman: Using and Porting the GNU Compiler Collection, Free Software Foundation, ISBN 0-595-10035-X  
Casi todo GCC está escrito en [[C]], aunque gran parte del front end de [[Ada]] está escrito en Ada.  
+
</li><li>Richard M. Stallman: Using Gcc: The Gnu Compiler Collection Reference, Free Software Foundation, ISBN 1-882114-39-6  
 
+
</li><li>Brian J. Gough: An Introduction to GCC, Network Theory Ltd., ISBN 0-9541617-9-3
== Etapas de compilación  ==
+
</li></ul>
 
+
<h2> Enlaces Externos  </h2>
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.  
+
<ul><li><a href="http://www.gcc.gnu.org">GCC</a>
 
+
</li></ul>
=== Preprocesado  ===
+
<a _fcknotitle="true" href="Category:Lenguajes_compilados">Lenguajes_compilados</a> <a _fcknotitle="true" href="Category:GNU">GNU</a>
 
 
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 ==
 
 
 
*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  
 
 
 
== Enlaces Externos  ==
 
 
 
*[http://www.gcc.gnu.org GCC]
 
 
 
 
 
[[Category:Lenguajes_compilados]][[Category:GNU]]
 

Revisión del 07:56 13 may 2010

Plantilla:SoftwarefckLR

GCC, es un compilador para <a _fcknotitle="true" href="GNU">GNU</a> considerado estándar para los <a _fcknotitle="true" href="Sistemas operativos">Sistemas operativos</a> derivados de <a _fcknotitle="true" href="UNIX">UNIX</a>, de <a _fcknotitle="true" href="Código abierto">Código abierto</a> o también de <a _fcknotitle="true" href="Sistemas operativos propietarios">Sistemas operativos propietarios</a>, 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: <a _fcknotitle="true" href="C">C</a>,<a _fcknotitle="true" href="C++">C++</a>, <a _fcknotitle="true" href="Objetive C">Objetive C</a>, <a _fcknotitle="true" href="Chill">Chill</a>, <a _fcknotitle="true" href="Fortran">Fortran</a>, <a _fcknotitle="true" href="Ada">Ada</a> y <a _fcknotitle="true" href="Java">Java</a>.

GCC es parte del proyecto GNU, el cual tiene como objetivo mejorar el compilador usado en los sistemas GNU incluyendo la variante <a _fcknotitle="true" href="GNU/Linux">GNU/Linux</a>. 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 <a _fcknotitle="true" href="GPL">GPL</a> (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 <a _fcknotitle="true" href="Código fuente">Código fuente</a> (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 <a _fcknotitle="true" href="DJGPP">DJGPP</a>. 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 <a _fcknotitle="true" href="C">C</a> ANSI publicado como <a _fcknotitle="true" href="Software libre">Software libre</a>. 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 <a _fcknotitle="true" href="C + +">C + +</a>. 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 <a _fcknotitle="true" href="Fortran">Fortran</a>, <a _fcknotitle="true" href="Ada">Ada</a>, <a _fcknotitle="true" href="Java">Java</a> y <a _fcknotitle="true" href="Objective-C">Objective-C</a>. 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 <a _fcknotitle="true" href="UNIX">UNIX</a>. 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 <a _fcknotitle="true" href="Código fuente">Código fuente</a> y produce código en <a _fcknotitle="true" href="Ensamblador">Ensamblador</a>. Todos ellos tienen una estructura interna común: un <a _fcknotitle="true" href="Front end">Front end</a> por lenguaje que procesa el lenguaje y produce un árbol de sintaxis y un <a _fcknotitle="true" href="Back end">Back end</a>, que convierte esos árboles al <a _fcknotitle="true" href="Lenguaje RTL">Lenguaje RTL</a> (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 <a _fcknotitle="true" href="Algoritmo">Algoritmo</a> de <a _fcknotitle="true" href="Jack Davidson">Jack Davidson</a> y <a _fcknotitle="true" href="Chris Fraser">Chris Fraser</a>.

Casi todo GCC está escrito en <a _fcknotitle="true" href="C">C</a>, aunque gran parte del front end de <a _fcknotitle="true" href="Ada">Ada</a> está escrito en Ada.

Etapas de compilación

El proceso de <a _fcknotitle="true" href="Compilación">Compilación</a> involucra cuatro etapas sucesivas. Para pasar de un <a _fcknotitle="true" href="Programa fuente">Programa fuente</a> escrito por un humano a un <a _fcknotitle="true" href="Archivo ejecutable">Archivo ejecutable</a> es necesario realizar estas cuatro etapas en forma sucesiva. Los <a _fcknotitle="true" href="Comandos">Comandos</a> gcc y <a _fcknotitle="true" href="G++">G++</a> son capaces de realizar todo el proceso de una sola vez.

Preprocesado

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

Compilación

La <a _fcknotitle="true" href="Compilación">Compilación</a> transforma el <a _fcknotitle="true" href="Código C">Código C</a> en el <a _fcknotitle="true" href="Lenguaje ensamblador">Lenguaje ensamblador</a> propio del <a _fcknotitle="true" href="Procesador">Procesador</a> de nuestra máquina.

Ensamblado

El ensamblado transforma el programa escrito en <a _fcknotitle="true" href="Lenguaje ensamblador">Lenguaje ensamblador</a> a <a _fcknotitle="true" href="Código objeto">Código objeto</a>, un <a _fcknotitle="true" href="Archivo binario">Archivo binario</a> en <a _fcknotitle="true" href="Lenguaje de máquina">Lenguaje de máquina</a> ejecutable por el <a _fcknotitle="true" href="Procesador">Procesador</a>.

Enlazado

Las <a _fcknotitle="true" href="Funciones">Funciones</a> de <a _fcknotitle="true" href="C/C++">C/C++</a> incluídas en nuestro <a _fcknotitle="true" href="Código">Código</a>, tal como printf() en el ejemplo, se encuentran ya compiladas y ensambladas en <a _fcknotitle="true" href="Bibliotecas">Bibliotecas</a> existentes en el sistema. Es preciso incorporar de algún modo el <a _fcknotitle="true" href="Código binario">Código binario</a> 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

  • 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

Enlaces Externos

<a _fcknotitle="true" href="Category:Lenguajes_compilados">Lenguajes_compilados</a> <a _fcknotitle="true" href="Category:GNU">GNU</a>