Sistemas operativos curso 2005/2006 3 COMPILADOR GCC

Anuncio
Sistemas Operativos
Práctica 2
Sesión 1
Curso 2005/2006
COMPILADOR GCC
●
●
●
El gcc es el compilador por excelencia con licencia pública GNU.
Es un compilador flexible y riguroso con el estándar ansi C.
Proporcionamos al compilador un programa fuente y nos
devuelve un archivo binario compilado para nuestra arquitectura.
Fases de compilación a partir del código fuente:
–
Preprocesador (cpp)
C completo
–
Compilador (cc1)
ensamblador
Programa
–
Ensamblador (as)
Código objeto
–
Enlazador (o linkador)
Sistemas operativos curso 2005/2006
en
Ejecutable (a.out)
2
COMPILADOR GCC
●
●
Si ejecutamos gcc realiza todas las fases en una, con la opción
-v nos informará en pantalla de cada fase.
Sintaxis de la orden
–
●
●
●
$ gcc [options] file.... Ejemplos hola.c Entrada.c
Error. Fallo al analizar el código C que impide la generación de
un ejecutable final.
Warning. Advertencia del copilador al analizar el código C que
no impide la generación de un ejecutable.
Opciones más comunes del gcc.
–
-o mediante esta opción podemos especificar el nombre del
ejecutable $gcc hola.c -o hola
Sistemas operativos curso 2005/2006
3
COMPILADOR GCC
–
-g incluye en el binario información necesaria para utilizar un
depurador posteriormente.
–
-Wall No omite la detección de ningún warning.
–
-O <nivel> indica a gcc que utilice optimización en el código,
posibles valores desde 0 a 3. Aumenta el tiempo de compilación.
–
-E solo realiza la fase de preprocesador, no compila, ni ensambla.
–
-S Preprocesa y compila, pero no ensambla ni enlaza
–
-c Preprocesa, compila y ensambla pero no enlaza.
–
-L <dir> Especifica un directorio adicional donde gcc debe buscar
las librerías necesarias en el proceso de enlazado.
–
-l <library> Especifica el nombre de una librería adicional que
deberá ser utilizada en el proceso de enlazado.
Sistemas operativos curso 2005/2006
4
COMPILADOR GCC
●
Para mas información man gcc
Sistemas operativos curso 2005/2006
5
COMPILACIÓN
●
Vamos a compilar el primer programa.
# include <stdio.h>
main()
{
printf(“hola, mundo\n”);
}
gcc hola.c -o hola
Sistemas operativos curso 2005/2006
6
EJEMPLOS
●
●
Transparencias de teoría Tema 2 – Sesion 1
–
Contar los caracteres, líneas y palabras de la entrada
–
Contar dígitos, espacios en blanco y otros
Transparencias de teoría Tema 2 – Sesión 2
–
Imprimir la línea de entrada mas larga (versión normal)
Sistemas operativos curso 2005/2006
7
Descargar