UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

14.7. Compilando en dos pasos

Hasta ahora el proceso de compilación que hemos tratado se hace en un solo paso. Sin embargo, este se divide en dos pasos: uno de compilación y otro de enlazado. El paso de compilación crea codigo ensamblador y lo convierte a código objeto. Para realizar este paso debes indicar al compilador que detenga el proceso antes de enlazar. Esto se hace adicionado la opción -c al comando gcc, así:

$ gcc -c filename.c

Usualmente un programa C se compone de varios ficheros .c. Para compilarlo, bastará con compilar cada fichero .c por separado, obteniendo como resultado un fichero .o para cada uno. Toma cada fichero de código .c generado en la sección anterior, aplica el primer paso del proceso de compilación, y verifica que hayas obtenido un fichero .o por cada fichero .c compilado.

Ahora ya puedes generar el programa ejecutable, para ello bastará con ejecutar el paso de enlazado. Este paso enlaza tu programa con otros programas que contienen funciones que tu programa usa. Para ello debes adicionar al comando gcc la opción -o con el nombre del programa ejecutable, seguido de la lista de ficheros .o obtenidos en el paso de compilación.

$ gcc -o program filename1.o filename2.o filename3.o

Ejecuta el programa obtenido y verifica los resultados. Compilar los programas por separado es útil por ejemplo, cuando se han realizado cambios en un solo fichero .c, solo sería necesario compilar dicho programa y enlazarlo con los demás .o. Prueba a realizar un cambio en uno de tus ficheros .c compila este fichero con la opción -c, enlaza el fichero .o con los otros ficheros objeto (compilando con la opción -o), y ejecuta el programa. Consiseras útil esta opción? La usarías en progrmas más complejos?