开发者社区> double2li> 正文

VC++程序编译链接的原理与过程

简介: 我们在EX10这个工程中,选择菜单中「Build」→「Rebuild All」,重新编译所有的工程文件,可以看到如下输出:     从这个输出中,我们可以看到可执行程序EX10.exe的产生,经过了两个步骤:首先,C++编译器对工程中的三个源文件fish.cpp、animal.cpp单独进行编译(Compiling…)。
+关注继续查看

我们在EX10这个工程中,选择菜单中「Build」→「Rebuild All」,重新编译所有的工程文件,可以看到如下输出:

VC++程序编译链接的原理与过程

    从这个输出中,我们可以看到可执行程序EX10.exe的产生,经过了两个步骤:首先,C++编译器对工程中的三个源文件fish.cpp、animal.cpp单独进行编译(Compiling…)。在编译时,先由预处理器对预处理指令(#include、#define和#if)进行处理,在内存中输出翻译单元(一种临时文件)。编译器接受预处理的输出,将源代码转换成包含机器语言指令的三个目标文件(扩展名为obj的文件):EX10.obj、fish.obj、animal.obj.注意,在编译过程中,头文件不参与编译;在EX10工程的Debug目录下,我们可以看到编译生成的obj文件。接下来是链接过程(Linking…),链接器将目标文件和你所用到的C++类库文件一起链接生成EX10.exe.整个编译链接的过程如图2.18所示。

    好了,到此C++的知识就讲解完毕了。当然C++的内容还有很多,但这一章的内容,对于我们从事VC++开发已经足够了,还有部分C++内容,会在后面的章节中讲解。休息一下,然后继续我们的VC++之旅。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【数组与链表算法】矩阵算法在程序中常见的简单应用 | C++
数组与链表都是相当重要的结构化数据类型,也都是典型线性表的应用。线性表用于计算机中的数据存储结构,按照内存存储的方式基本上可以分为以下两种:静态数据结构和动态数据结构。数组类型就是一种典型的静态数据结构,动态数据结构又称为链表。在我前面的算法系列文章都细致的对二者的使用方法做过讲解。
18 0
【C++】使用VS2022开发可以在线远程编译部署的C++程序
c++类库源码以及其他有关资源。站点是英文的,英文不好的话可以谷歌浏览器在线翻译。http://www.cplusplus.com/
60 0
C/C++程序的编译过程
C/C++程序的编译过程
33 0
第一个C++程序
第一个C++程序
17 0
C/C++编程题之密码验证合格程序
C/C++编程题之密码验证合格程序
21 0
MSYS2编译C/C++程序
MSYS2编译C/C++程序
99 0
Linux VScode创建第一个C++程序 配置环境(图文教程)
Linux VScode创建第一个C++程序 配置环境(图文教程)
164 0
【维生素C语言】第十四章 - 浅析C/C++程序的内存开辟
本篇博客旨在加深动态内存开辟的理解,以 C/C++ 程序的内存开辟为主题进行简要的分析。
17 0
+关注
double2li
一个在IT行业摸爬滚打的老司机
文章
问答
文章排行榜
最热
最新
相关电子书
更多
继承与功能组合
立即下载
对象的生命期管理
立即下载
移动与复制
立即下载