Compilador GCC

Por Donato Galo

pero pero también tambiénpuede puedeser serun uncódigo códigointermedio intermedio(bytecode). compilación.¿Qué es el Compilador? Programa Programainformático informáticoque quetraduce traduceun unprograma programaescrito escritoen enun unlenguaje lenguaje de deprogramación programacióna aotro otrolenguaje lenguajede deprogramación.generando generandoun un programa programaequivalente equivalenteque quela lamáquina máquinaserá serácapaz capazde deinterpretar. (bytecode).Este Esteproceso procesode detraducción traducciónse seconoce conocecomo comocompilación. máquina. programación. texto. interpretar.o osimplemente simplemente texto. Usualmente Usualmenteel elsegundo segundolenguaje lenguajees eslenguaje lenguajede demáquina. .

Diagrama a bloques de la operación de un buen compilador .

.Análisis Se Setrata tratade dela lacomprobación comprobaciónde dela lacorrección correccióndel delprograma programafuente.e e incluye incluyelas lasfases fasescorrespondientes correspondientesal alAnálisis Análisisléxico. Sintáctico.Análisis Análisissintáctico sintáctico y yAnálisis Análisissemántico.Partes de un compilador . fuente. léxicos. semántico. Análisis AnálisisLéxico: Léxico:consiste consisteen enla ladescomposición descomposicióndel delprograma programafuente fuente en encomponentes componentesléxicos. Análisis AnálisisSintáctico: Sintáctico:agrupación agrupaciónde delos loscomponentes componentesléxicos léxicosen en frases frasesgramaticales. gramaticales. léxico. Análisis AnálisisSemántico: Semántico:comprobación comprobaciónde dela lavalidez validezsemántica semánticade delas las sentencias sentenciasaceptadas aceptadasen enla lafase fasede deAnálisis AnálisisSintáctico.

Y Yde deOptimización Optimizaciónde deCódigo Código(en (enlas lasque quese sebusca buscaobtener obtenerun uncódigo código lo lomás máseficiente eficienteposible). posible). Suele Sueleestar estarformado formadopor poruna unao ovarias variascombinaciones combinacionesde defases fasesde de Generación Generaciónde deCódigo Código(normalmente (normalmentese setrata tratade decódigo códigointermedio intermedioo o de decódigo códigoobjeto). objeto. . objeto).Partes de un compilador .Síntesis Su Suobjetivo objetivoes esla lageneración generaciónde dela lasalida salidaexpresada expresadaen enel ellenguaje lenguaje objeto.

Objective-C++.2 4. C++.Es Esun un conjunto conjuntode decompiladores compiladorescreados creadospor porel elproyecto proyectoGNU. GNU.7. GNU).Fortran.Java. Objective-C++. Java. Objective-C. GCC GCCes esun uncompilador compiladorintegrado integradodel delproyecto proyectoGNU GNUpara paraC. Actualmente Actualmentese seencuentra encuentraen enla laversión versión4. Objective-C.Compilador GCC La Lasigla siglaGCC GCCsignifica significa"GNU "GNUCompiler CompilerCollection".y yGo.C++.Originalmente Originalmente significaba significaba"GNU "GNUC CCompiler".Ada. Fortran. Compiler".7. C. GNU GNUCompiler CompilerCollection Collection(colección (colecciónde decompiladores compiladoresGNU). Go.2 . Ada. Collection".

copiarlos.traducirlos traducirloso ocrear crearlistas. GPL. X.de decódigo códigoabierto abiertoy ytambién tambiénde de propietarios. enlazarlos.enlazarlos. propietarios. GCC GCCes essoftware softwarelibre librey ylo lodistribuye distribuyela laFree FreeSoftware SoftwareFoundation Foundation (FSF) (FSF)bajo bajola lalicencia licenciageneral generalpública públicaGPL. correr. GCC GCCrequiere requiereel elconjunto conjuntode deaplicaciones aplicacionesconocido conocidocomo comobinutils binutilspara para realizar realizartareas tareascomo comoidentificar identificararchivos archivosobjeto objetou uobtener obtenersu sutamaño tamañopara para copiarlos. Estos Estoscompiladores compiladoresse seconsideran consideranestándar estándarpara paralos lossistemas sistemas operativos operativosderivados derivadosde deUNIX.o oquitarles quitarlessímbolos símbolos innecesarios. listas.como comoMac MacOS OSX.Compilador GCC Es Escapaz capazde derecibir recibirun unprograma programafuente fuenteen encualquiera cualquierade deestos estos lenguajes lenguajesy ygenerar generarun unprograma programaejecutable ejecutablebinario binarioen enel ellenguaje lenguajede de la lamáquina máquinadonde dondeha hade decorrer. UNIX. . innecesarios.

...Sintaxis $ gcc [opciones] fichero .

-E realiza solamente el preprocesamiento. obteniendo el archivo en código objeto. no realiza el enlazado. -v muestra los comandos ejecutados en cada etapa de compilación y la versión del compilador. -c realiza preprocesamiento y compilación. Es un informe muy detallado.Opciones -o archivo indica el nombre del archivo de salida. cualesquiera sean las etapas cumplidas. enviando el resultado a la salida estándar. .

Opciones -Iruta especifica la ruta hacia el directorio donde se encuentran los archivos marcados para incluir en el programa fuente. -Lruta especifica la ruta hacia el directorio donde se encuentran los archivos de biblioteca con el código objeto de las funciones referenciadas en el programa. -Wall muestra todos los mensajes de error y advertencia del compilador. . incluso algunos cuestionables pero en definitiva fáciles de evitar escribiendo el código con cuidado. tal como GDB (GNU Debugger). -g incluye en el ejecutable generado la información necesaria para poder rastrear los errores usando un depurador.

$ gcc hola.c -o ~/bin/hola Genera el ejecutable hola en el subdirectorio bin del directorio propio del usuario.c. genera un archivo ejecutable hola.c Compila el programa en C hola.c. $ gcc hola. genera un archivo ejecutable a.c -o hola Compila el programa en C hola.Ejemplos $ gcc hola.out. .

en el archivo hola.o. . $ gcc -c hola.c -o objeto. sino el código objeto. Si no se indica un nombre para el archivo objeto. usa el nombre del archivo en C y le cambia la extensión por .c No genera el ejecutable.o.Ejemplos $ gcc -c hola.o Genera el código objeto indicando el nombre de archivo.

La opción -L debe repetirse para cada directorio de búsqueda de bibliotecas. $ gcc hola.Ejemplos $ gcc hola. .c -L/lib -L/usr/lib Indica dos directorios donde han de buscarse bibliotecas.h).c -I/usr/include Indica un directorio para buscar archivos de encabezado (de extensión .

org/wiki/GNU_Compiler_Collection http://iie.edu.org/wiki/Compilador http://www.org/ http://gcc.org/ http://es.php http://gcc.org/wiki/GNU_Compiler_Collection http://es.htm ● ● ● ● ● ● ● ● .wikipedia.Referencias ● ● http://es.alegsa.com.wikipedia.uy/~vagonbar/gcc-make/gcc.com.gnu.gnu.wikipedia.fing.htm http://iie.alegsa.edu.uy/~vagonbar/gcc-make/gcc.fing.ar/Dic/compilador.php http://www.wikipedia.ar/Dic/compilador.org/wiki/Compilador http://es.

Fin!!! .