1. 预处理 -E xxx.i 预处理文件

gcc -E xxx.c -o xxx.i

  1) 头文件展开。 --- 不检查语法错误。 可以展开任意文件。

  2)宏定义替换。 --- 将宏名替换为宏值。

  3)替换注释。 --- 变成空行

  4)展开条件编译 --- 根据条件来展开指令。

2. 编译 -S xxx.s 成为汇编文件

  gcc -S hello.i -o hello.s

  1)逐行检查语法错误。【重点】 --- 整个编译4步骤中最耗时的过程。

  2)将C程序翻译成 汇编指令,得到.s 汇编文件。

 

3   汇编:将汇编指令翻译成对应的 二进制编码。

gcc -c hello.s -o hello.o


4. 链接 无 xxx.exe 可执行文件。

  gcc hello.o -o hello.exe

  1)数据段合并

  2)数据地址回填

  3)库引入