首页 > 代码库 > gcc 的编译过程

gcc 的编译过程

通常我们都是使用下面的命令来直接生成可执行文件

gcc demo.c -o demo

对于我们来说十分简单,但是对编译器来说却完成了一系列复杂的工作,概括起来有如下几步:

1. 预处理

gcc -E demo.c -o demo.i

这一阶段主要处理源文件中的#ifdef、#include和#define等预处理命令
demo.c -> demo.i(经过预处理后的c源代码文件)


2. 编译阶段

gcc -S demo.i -o demo.s

在编译阶段,gcc把预处理后的结果编译成汇编或者目标模块。
demo.i -> demo.s(汇编语言源代码文件)


3. 汇编

gcc -c demo.s -o demo.o

在汇编阶段,编译器把编译出来的结果汇编成具体cpu上的目标代码模块
demo.s -> demo.o(编译后的目标文件)


4. 链接阶段

gcc demo.o -o demo

在链接阶段,把多个目标代码模块连接生成一个大的目标模块,输入机器代码文件(与其他的机器代码文件和库文件),汇集成一个可执行的二进制代码文件。
demo.o -> demo(可执行文件)

 

gcc 的编译过程