关于VC++的增量链接(Incremental Linking)
增量链接(Incremental Linking)这个词语在使用Visual C++时经常会遇到(其实
不只是VS系列,其它链接器也有这个特性), 就比如经常遇到的:上一个增量链接没有
生成它, 正在执行完全链接. 但是它是什么意思呢? 很多人只是经常看到, 但是不
明白这是什么. 首先说明一下, 这个特性是链接器为了<提高链接速度>而增加的功
能. 说是这样, 可能不理解, 下面就说说其原理:
有一个源代码文件, 你写了许多许多行, 你正在调试它, 你突然发现某个地方
有一个小BUG, 你打算改正, 好了, 错误改正了, 但是链接器该采用何种方式链接新代码?
其一: 可以把obj删除, 然后重新生成.
其二: 为每个函数预留一部分空间, 编译链接时, 只是修改你修改过的函数
对应的代码, 其它二进制代码保持不变.
可能你已经明白了, 为目标(函数)代码"预留一部分空间", 这就是"增量"的含
义. 当代码修改后, 只需要修改这一部分的目标代码即可快速完成编译与链接!
这就为调试代码时快速修改编译提高了速度! 这也是为什么调试器
支持 "Edit and Continue" 特性!
这不浪费程序空间么? 你可能会想, 不过确实如此. 正因为如此, Debug版本的
目标文件会远远大于Release版本的目标文件(不单因为此). 在Release编译时, 是
不能启用增量链接模式的!
好了, 先就介绍这些, 其实我也只是知道部分原理, 本文的讲解并不深入!
女孩不哭 @ 2013-06-26 22:22:12 @ http://www.cnblogs.com/nbsofer
关于VC++的增量链接(Incremental Linking)的更多相关文章
- 【C++ 调试】增量链接 Incremental Linking
概述: Incremental Linking翻译成中文就是"增量链接",是一个链接的参数选项,作用就是为了提高链接速度的.什么意思呢?不选用增量链接时,每次修改或新增代码后进行链 ...
- 【转】关于增量链接(incremental linking)
增量链接(Incremental Linking)这个词语在使用Visual C++时经常会遇到(其实不只是VS系列,其它链接器也有这个特性), 就比如经常遇到的:上一个增量链接没有生成它, 正在执行 ...
- incremental linking(增量链接)的作用
转:incremental linking(增量链接)的作用 今天编译一个C++程序时,报了一个奇怪的错误(之前是好好的): 1>LINK : fatal error LNK1123: fail ...
- [debug] 关闭vs的增量链接
1. 什么是增量链接? 答:采用Debug模式下,函数地址并不是该函数的开始部分,而是跳转到一个 jmp 函数地址. 比如,一个函数 test(),其地址 test 对应的汇编语句是 "jm ...
- warning LNK4076: 无效的增量状态文件“../×××.ilk”;正在非增量链接
VS编译警告:warning LNK4076: 无效的增量状态文件“../×××.ilk”;正在非增量链接 解决方法:删除程序提示的输出目录的×××.ilk,重新编译,即可
- 栈帧的内部结构--动态链接 (Dynamic Linking)
每个栈帧中包含: 局部变量表(Local Variables) 操作数栈(Opreand Stack) 或表达式栈 动态链接 (Dynamic Linking) (或指向运行时常量的方法引用) 动态返 ...
- PostgreSQL 13支持增量排序(Incremental Sorting)
PostgreSQL 13支持增量排序(Incremental Sorting) PostgreSQL 13一个重要的功能是支持增量排序,使用order by 时可以加速排序,SQL如下 select ...
- vc如何编译链接opengl库
强烈推荐的一篇强大的OpenGl学习博文OpenGL入门学习 vc2012如何链接opengl库? 首先,我们需要下载opengl的库文件,http://pan.baidu.com/s/1kTsjkZ ...
- ubuntu上的arm-elf-tools -20040427.sh 下载及安装问题的解决
要完成uclinux在ARM上的移植,必须有这个工具. 下载地址:http://opensrc.sec.samsung.com/download.html 这个网站上还有许多其它资源可以下载.我选择 ...
随机推荐
- template.helper 多参数
<script type="text/html" id="text4"> {{detail name classInfo schoolInfo}} ...
- Redis 实现队列http://igeekbar.com/igeekbar/post/436.htm
场景说明: ·用于处理比较耗时的请求,例如批量发送邮件,如果直接在网页触发执行发送,程序会出现超时 ·高并发场景,当某个时刻请求瞬间增加时,可以把请求写入到队列,后台在去处理这些请求 ·抢购场景,先入 ...
- Java并发编程 - 基本概念
在开始我们的并发编程前,我们必须预热一下,一些基本概念必须了解. 1. 同步(Synchronous) / 异步(Asynchronous) 同步和异步都指一次方法调用. 同步:方法开始后,调用者必须 ...
- LintCode: Identical Binary Tree
C++ /** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; ...
- 【转】一些linux基础命令
学习Linux,其实很多基础命令很重要. 不论多么复杂的shell或者命令组合,都是一个一个的拼接组合命令拼接而成: 大号一个基本功,遇到需要的场景,信手拈来,随意组合拼接,是非常重要的. 恰好看到一 ...
- canvas转图片
<script> var canvas, context2D, canvasimg, context2Dimg ,fontSize = 100; window.onload ...
- Android versionCode和versionName的区别
简单的说,versionCode是给机器看的,versionName是给人看的.更新的时候,机器根据versionCode判断是升级还是降级,即使versionName(版本号)比以前的高,但是ver ...
- Mongostat 3.0详解
可以参考之前写的这篇博客: Mongostat 2.6详解 mapped Changed in version 3.0.0. Only for MMAPv1 Storage Engine. The t ...
- unity3d uv动画
做个总结吧.算是. 之前做过一个项目,是一个关于太空大战的项目. 算是自己做的吧.大体环境是unity3d + win32,mac上不行.好像不支持这个,原因未知.希望知道的告诉我下. 以下具体说下整 ...
- 深入理解JVM(三)——垃圾收集策略具体解释
Java虚拟机的内存模型分为五个部分.各自是:程序计数器.Java虚拟机栈.本地方法栈.堆.方法区. 这五个区域既然是存储空间,那么为了避免Java虚拟机在执行期间内存存满的情况,就必须得有一个垃圾收 ...