小白学VC++ - 程序编译过程

一个.c/.cpp源码最终变成可执行文件要经过以下步骤:
在这里插入图片描述
过程解析如下:

(一)预处理阶段。首先我们会对我们编辑得到的源代码(即扩展名为.c/.cpp文件)通过预处理器进行预处理,这一部分是由我们的编译器帮我们完成的。预处理器做的事情就是将原始源文件中的所有预处理器指令替换为暗示指令的实际库代码。那么什么是预处理指令呢?实际上这些是我们在代码很常见的,如#include和#define指令。之后,生成的文件基本上被取代并获得扩展名为.i文件。

(二)编译器编译阶段。接下来是编译器的处理阶段,这个阶段是把高级语言翻译成低级语言的过程,也负责检查源代码的语法/语法。若发现无误,则会将文件转换为扩展名为.s的文件,即我们所知的汇编代码。

(三)目标文件转换阶段。得到汇编文件之后,要对其进行转换,即该过程是将汇编级语言转换为机器级语言(一般为二进制格式),此时生成的文件就是我们的目标文件,扩展名为.o或.obj。

(四)链接阶段。C++语言支持分离式编译(这里指的编译是指上面(一)至(三)阶段)机制的,该机制允许将程序分割为若干个文件,每个文件可独立编译。那么多个已编译的文件如何合并呢?答案就是在此阶段。该阶段通过链接器将一个或多个目标文件合并到一个可执行文件,即将扩展名为.obj / .o文件转换为扩展名为.exe文件。

以上的四个阶段就是.cpp文件转换为.exe文件的过程。

注:我们平常所说的“编译”是一个整体,即包括预处理,编译和汇编三个阶段。它在这些步骤中基本上将高级语言转换为机器级语言,并生成单个二进制对象文件。若编译(但不链接)三个单独的文件,则将创建三个作为输出的目标文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值