c 源程序到可执行程序的过程
编写一个c程序,用gcc进行编译,得到一个可执行程序。看似简单,其实gcc后台隐含执行了四个阶段步骤。
一、预处理
二、编译
三、汇编
四、链接
下面我们通过程序具体的看一下。
这是我写的一小段代码,文件名为test.c
一 、预处理
预处理就是对各种预处理命令进行处理,包括头文件的包含,宏定义的扩展,条件编译的选择。 此阶段生成以 (
.i )
为后缀的文件。我们可以用 -E 选项进行查看。
我们可以查看test.i 的内容
二 、编译
把
.i
文件作为输入 产生汇编语言。 生成 (
.s
) 为后缀的文件。 我们可以用 -S 选项进行查看。
查看test.s 的内容
三 、汇编
把汇编代码翻译成机器代码(二进制) , 生成
.o
为后缀的文件
。我们可以用 -c 选项进行查看。
查看 test.o的内容。
完全的看不懂。
四 、 链接
将有关文件彼此连接使成为可执行文件。
我们编译test.o 文件 ,得到 a.out可执行文件。
好了 , 以上就是这四个阶段 所产生的文件 及其内容。 希望大家指出不足,共同进步。