我们有相当大的 C++ 应用程序,它由 Visual Studio 2005 中的大约 60 个项目组成。目前在 Release 模式下链接需要 7 分钟,我想尝试减少时间。是否有任何改进链接时间的技巧?
大多数项目都编译成静态库,这使得测试更容易,因为每个项目都有一组关联的单元测试。似乎静态库的使用阻止了 VS2005 使用增量链接,因此即使打开了增量链接,它每次都会进行完整链接。
对子项目使用 DLL 会有什么不同吗?我真的不想遍历所有标题并添加宏来导出符号(即使使用脚本),但如果它能减少 7 分钟的链接时间,我肯定会考虑它。
出于某种原因,从命令行使用 nmake 稍微快一些,而在 Linux(使用 GCC)上链接相同的应用程序要快得多。
- Visual Studio IDE 7 分钟
- 从命令行使用 nmake 的 Visual C++ - 5 分钟
- Linux 上的 GCC 34 秒
最佳答案
如果您使用的是 /GL
启用全程序优化 (WPO) 或 /LTCG
的标志标志以启用链接时间代码生成,关闭它们将显着缩短链接时间,但会牺牲一些优化。
此外,如果您使用的是 /Z7
标记将调试符号放入 .obj
文件中,您的静态库可能很大。使用 /Zi
创建单独的 .pdb
文件可能会有所帮助,如果它阻止链接器从磁盘读取所有调试符号。我不确定它是否真的有帮助,因为我没有对其进行基准测试。
关于c++ - 如何在 VS2005 中提高大型 C++ 应用程序的链接性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5963151/