增量鏈接(Incremental Linking)這個詞語在使用Visual C++時經常會遇到(其實
不只是VS系列,其它鏈接器也有這個特性), 就比如經常遇到的:上一個增量鏈接沒有
生成它, 正在執行完全鏈接. 但是它是什么意思呢? 很多人只是經常看到, 但是不
明白這是什么. 首先說明一下, 這個特性是鏈接器為了<提高鏈接速度>而增加的功
能. 說是這樣, 可能不理解, 下面就說說其原理:
有一個源代碼文件, 你寫了許多許多行, 你正在調試它, 你突然發現某個地方
有一個小BUG, 你打算改正, 好了, 錯誤改正了, 但是鏈接器該采用何種方式鏈接新代碼?
其一: 可以把obj刪除, 然后重新生成.
其二: 為每個函數預留一部分空間, 編譯鏈接時, 只是修改你修改過的函數
對應的代碼, 其它二進制代碼保持不變.
可能你已經明白了, 為目標(函數)代碼"預留一部分空間", 這就是"增量"的含
義. 當代碼修改后, 只需要修改這一部分的目標代碼即可快速完成編譯與鏈接!
這就為調試代碼時快速修改編譯提高了速度! 這也是為什么調試器
支持 "Edit and Continue" 特性!
這不浪費程序空間么? 你可能會想, 不過確實如此. 正因為如此, Debug版本的
目標文件會遠遠大於Release版本的目標文件(不單因為此). 在Release編譯時, 是
不能啟用增量鏈接模式的!
好了, 先就介紹這些, 其實我也只是知道部分原理, 本文的講解並不深入!
女孩不哭 @ 2013-06-26 22:22:12 @ http://www.cnblogs.com/nbsofer