当前位置:  开发笔记 > 编程语言 > 正文

为什么在构建C++代码时编译+链接,而不是直接生成可执行文件

如何解决《为什么在构建C++代码时编译+链接,而不是直接生成可执行文件》经验,为你挑选了1个好方法。

当导师入门级程序员时,我被问到这个问题,我正在考虑这个官方和通常的编译+链接过程,我从来没有想过为什么.

我能想到的一件事是提高开发效率,但是还有其他更多与编译器相关的原因吗?



1> Martin Becke..:

效率.编译程序时,为每个源文件创建一个目标文件,如果更改源文件,则只需重新编译该模块然后重新链接(重新链接很便宜).如果编译器在一次传递中完成所有操作,则必须为每次更改重新编译所有内容.

它也符合unix的小程序理念,它可以做一件事,所以你有一个预处理器,一个编译器,一个链接器,一个库创建者.这些步骤现在可能是同一工具的不同模式.

但是有理由说你希望编译器在一个步骤中链接,如果允许编译器在链接时更改目标文件,你可以做一些优化 - 大多数现代编译器允许这样做,但它需要它们将额外的信息放入编译时的目标文件.

如果编译器可以将整个项目存储在单个数据库中,而不是混乱的源,资源,浏览信息文件,目标文件等,那会更好 - 但开发人员非常保守!


另一件需要考虑的事情是它完全有可能从obj文件的不同子集创建更多可执行文件(即两个项目可以使用相同的源代码文件= modules = obj文件).由于编译和链接阶段的分离,这当然是可能的.您无需从头开始重建所有内容.
推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有