C++编译链接
来源:互联网 发布:中核原子能公司 知乎 编辑:程序博客网 时间:2024/05/01 15:36
编译:compile,先针对单独原文件进行处理。
每个cpp文件(文本形式存在的源代码)作为一个编译单元,被独立编译成一个目标文件(obj,机器语言形式),它用目标语言来描述.cpp的内容。
不同CPP文件的函数可以通过声明的方式使用,通常声明放在H文件里。
链接:link,把compile处理的结果组合成一个完整的可执行文件。
接器将所有的目标文件obj链接起来,形成一个.exe可执行文件。
过程:
一、预编译(预处理)
处理#define #if #include这类#开头的语句,这些称为预编译指令。
这个过程中会把.h文件和.c/.cpp文件组合成最终交给compile过程的原文件。
这个原文件是不包含任何#开头的语句的。所有#define定义的宏也会被替换。
二、编译
把上面那个原文件编译成.o或者VC里是.obj文件。
这个文件保存了机器码化的函数、函数的描述、全局变量的描述、乃至段的描述等等。
三、链接
把可执行程序需要的所有的编译过程产生的.o或者.obj文件组合到一起。
(这里也包括.lib文件,.lib文件件本质上就是打包的.obj文件集合)。
另外连接过程还会组合一些其他数据,比如资源、可执行文件头等等。
可见链接库那篇文章。
每个cpp文件(文本形式存在的源代码)作为一个编译单元,被独立编译成一个目标文件(obj,机器语言形式),它用目标语言来描述.cpp的内容。
不同CPP文件的函数可以通过声明的方式使用,通常声明放在H文件里。
链接:link,把compile处理的结果组合成一个完整的可执行文件。
接器将所有的目标文件obj链接起来,形成一个.exe可执行文件。
过程:
一、预编译(预处理)
处理#define #if #include这类#开头的语句,这些称为预编译指令。
这个过程中会把.h文件和.c/.cpp文件组合成最终交给compile过程的原文件。
这个原文件是不包含任何#开头的语句的。所有#define定义的宏也会被替换。
二、编译
把上面那个原文件编译成.o或者VC里是.obj文件。
这个文件保存了机器码化的函数、函数的描述、全局变量的描述、乃至段的描述等等。
三、链接
把可执行程序需要的所有的编译过程产生的.o或者.obj文件组合到一起。
(这里也包括.lib文件,.lib文件件本质上就是打包的.obj文件集合)。
另外连接过程还会组合一些其他数据,比如资源、可执行文件头等等。
可见链接库那篇文章。
0 0
- c编译链接过程
- C 编译、链接、加载
- C语言编译、链接
- C 编译、链接、加载
- C 编译、链接、加载
- 【C++】编译链接过程
- C 编译、链接、加载
- C 编译、链接、加载
- c语言编译链接
- C语言编译 链接
- c语言编译链接
- 【C/C++】编译和链接
- C/C++编译链接原理
- c 程序的编译链接
- C mysql编译链接问题
- c语言编译、链接过程
- c/c++编译链接过程
- C语言 编译、链接、全局变量
- 转载---一致性算法Paxos详解
- 怎么遍历jsonarray
- LintCode: 矩阵归零
- 【Linux学习笔记九】Shell编程-正则表达式
- 高精度除法(大数相除)
- C++编译链接
- 网络编程知识(8)--使用Nginx搭建WEB服务器
- 派生类对象初始化构造过程顺序
- easyui的treegrid,只能出来父节点,子节点出不来
- CentOS上hadoop伪分布式配置
- java的UDP协议通讯的客户端
- MFC应用程序中处理消息的顺序以及对话框关闭步骤
- 点-圆-圆柱类族的设计 2
- Max Script|控制器-转换约束_link