gcc 的编译过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 的编译过程的主要内容,如果未能解决你的问题,请参考以下文章

GCC编译器原理------编译原理三:编译过程---预处理

C程序存储结构

GCC与编译过程

gcc编译的过程

GCC编译C源代码的四个步骤

gcc 编译过程