gcc工作流程讲解

您所在的位置:网站首页 gcc编译过程包括哪四个阶段 gcc工作流程讲解

gcc工作流程讲解

2023-07-25 05:37| 来源: 网络整理| 查看: 265

linux系统中的源文件经过gcc(c文件)/g++(cpp文件)编译器的四个步骤处理,能够生成一个可执行的程序: 

当然gcc编译器不能独立完成这四个步骤,而是在内部调用了其他工具,从而完成了整个工作流程。在这其中,编译是最耗时的,因为要逐行检查语法。

那现在通过Linux中的一个cpp文件来了解其中的编译过程。

在linux创建一个test.cpp文件

1.预处理阶段:

这个阶段会将文件中的头文件展开,宏替换掉,注释去掉,经过(cpp预处理器)预处理后的cpp文件变为一个i文件。

g++ -E test.cpp -o test.i

这行代码是将test.cpp预处理后生成的内容输入到test.i文件中,如果这条命令不加上-o test.i的话,那么生成的内容就会输出到终端上,同时也没办法对这些预处理的内容进行后续的处理。

 上面是test.i文件,test.pp经过预处理后生成的内容。

2.编译阶段:

预处理后的cpp文件经过gcc编译器的处理,翻译成汇编文件,当然原来的.i文件依然存在。

g++ -S test.i -o test.s

3.汇编阶段:

在编译阶段生成的汇编文件会经过汇编器(as)的处理,生成二进制目标文件。

g++ -c test.s -o test.o

4.链接阶段:

链接阶段是将所有相关的目标文件链接起来,形成一个整体,生成一个可执行文件。 无选项链接: 这个命令会把二进制目标文件test.o所需的相关文件链接成一个整体,并在当前文件夹自动生成一个名为a.out的可执行文件。

g++ test.o

当然也可以生成指定的可执行文件

g++ test.o -o test.exe

运行可执行文件:

./文件名

当然在日常工作中,我们可以直接将一个源文件直接生成可执行文件:

g++ 源文件 -o 指定的文件名

总结:一个源文件到生成一个可执行文件需要经过四个步骤的处理:

源文件->(预处理).i文件->(编译).s文件->(汇编).o文件->(链接).exe文件。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3