文件到可执行文件
-
预处理
cpp hello.c > hello.i
处理#include预编译命令,处理#if #ifdef等条件预编译指令,展开#define宏定义,删除注释等编译前操作。 -
编译
cc1 hello.c
词法分析、语法分析、语义分析以及优化,输出汇编代码。 -
汇编
as hello.s -o hello.o
汇编代码为机器指令,输出为目标文件。 - 链接 把可重定位文件依次读入,分析各个文件的文件头和section,并计算各个section的虚拟地址,对需要重定位的符号进行处理,设定它们的虚拟内存地址等,最终产生可执行文件或库。
gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o