gcc 的执行过程详解 预处理 编译 汇编 链接

在Linux中,使用GCC编译程序的过程可以被分为四个阶段:

gcc 的执行过程详解 预处理 编译 汇编 链接


下面我们以hello.c为例,来看看各个阶段,编译器做了什么

gcc 的执行过程详解 预处理 编译 汇编 链接

----对hello.c进行预编译

执行命令:gcc -E hello.c -o hello.i,打开生成的hello.i文件

gcc 的执行过程详解 预处理 编译 汇编 链接

可以看到由原来的10行变成了858行。

----对hello.i进行编译,这个时候我们的代码就变成汇编指令了。

gcc -S hello.i -o hello.s

gcc 的执行过程详解 预处理 编译 汇编 链接

----对hello.s进行汇编,这一步的工作是生成二进制机器指令,

gcc -c hello.s -o hello.o

gcc 的执行过程详解 预处理 编译 汇编 链接

----最后,对hello.o进行链接,生成可执行程序

gcc hello.o -o hello

gcc 的执行过程详解 预处理 编译 汇编 链接