Page 49 - LENGUAJES FORMALES AUTOMATAS Y COMPILADOS
P. 49
49
.c fichero fuente en C
.h fichero cabecera fuente en C (sólo útil para los #include)
.s fichero fuente en ensamblador (también reconocido)
.i fichero fuente tras ser pre procesado (raramente empleado por el usuario)
.o fichero objeto
.a fichero de biblioteca
El compilador de C sólo genera un ejecutable, de nombre a.out, aunque se le puede indicar que
tenga otro nombre con la opción -onombre_de_ejecutable.
Uso del compilador
El programa cc se invoca desde el shell, admitiendo como argumentos los ficheros empleados
para construir el ejecutable más una serie de opciones de compilación. Las opciones y
modalidades de uso del cc son muy amplias.
Por omisión, el cc genera un ejecutable llamado a.out. En la línea de órdenes pueden incluir tanto
ficheros fuentes en C como ficheros objeto, incluso fuentes en ensamblador. Los nombres de los
ficheros pueden aparecer en cualquier orden.
Ejemplo 1:
cc pepe.c
Si pepe.c es un fichero fuente en C, se compila y se enlaza con las bibliotecas del sistema. Si no
había errores sintácticos ni referencias a funciones o variables inexistentes, se genera el
ejecutable a.out.
Ejemplo 2:
cc -o pepe main.c utilidades.c pepe.o -lm
Éste es un ejemplo más complejo donde anticipamos el uso de un par de opciones de compilación.
La opción -o pepe sirve para que, en lugar de generar el fichero ejecutable pepe, en lugar
de a.out. Para construir el ejecutable se hace uso explícito de cuatro elementos:
1- Una fuente main.c (quizás con el programa principal).
2- Otra fuente, utilidades.c (quizás con funciones adicionales).
3- Un objeto pepe.o (tal vez con otras utilidades ya compiladas).
4- La biblioteca matemática estándar (con la opción -lm).
Con este ejemplo hacemos ver que un programa en C puede estar compuesto de varios módulos
en forma de ficheros fuentes. Y que si un módulo ya está compilado, podemos pasar como
argumento al compilador el correspondiente .o para ahorrar tiempo.