¿Cuáles son los pasos desde el programa fuente en lenguaje C hasta la ejecución del programa?
1. Preprocesamiento
En esta etapa, se procesan todas las declaraciones de preprocesamiento en el código fuente. Por ejemplo: el contenido del archivo contenido en la declaración #include reemplaza la declaración en sí y todo. Se procesan las declaraciones de preprocesamiento en el código fuente. Se expande la macro definida.
La parte correspondiente se selecciona en función de si las condiciones de #ifdef, #if y otras declaraciones son verdaderas. Después del preprocesamiento, el código fuente ya no contiene ninguna declaración de preprocesamiento.
La fase de preprocesamiento de GCC puede generar archivos .i, y la opción -E puede hacer que el compilador detenga la compilación cuando se completa el preprocesamiento. Por ejemplo: gcc -E -o hola.i hola.c
2. Compilación
En esta etapa, el compilador realiza análisis léxico, análisis de sintaxis, optimización y otras operaciones en el código fuente. Finalmente, genere código ensamblador. Este es el paso más importante de todo el proceso, por lo que a menudo todo el proceso se denomina compilación.
Puedes usar la opción -S para detener GCC después de la compilación y generar un ensamblador .s. Por ejemplo: gcc -S -o hola.s hola.c
3. Ensamblaje
En esta etapa, el ensamblador se utiliza para procesar el código ensamblador, generar código en lenguaje de máquina, y guárdelo con el sufijo en el archivo de objeto .o.
Cuando el programa consta de varios archivos de código, cada archivo primero debe completar el trabajo de ensamblaje y generar el archivo de destino .o antes de continuar con el siguiente paso de vinculación.
El archivo de destino ya forma parte del programa final, pero no se puede ejecutar antes de vincularlo. El archivo de destino se puede generar mediante la opción -c: gcc -c -o hello.o hello.c
4. Vinculación
El código de máquina después del ensamblaje no se puede ejecutar directamente. Para que el sistema operativo cargue el archivo ejecutable correctamente, el archivo debe contener un encabezado de información de formato fijo y debe estar vinculado con el código de inicio proporcionado por el sistema para que se ejecute normalmente. Estas tareas las completa el vinculador. gcc -o hola hola.c
5. Ejecutar: ejecute el archivo .EXE y obtenga los resultados de la ejecución.