gpt4 book ai didi

c++ - 与 VS6 相比,VS2008 C++ 编译中的巨大 OBJ 文件

转载 作者:可可西里 更新时间:2023-11-01 16:16:26 27 4
gpt4 key购买 nike

我们有一个大型项目,超过 100 万行代码包含大约 300 个 DLL。到目前为止,我们一直在使用 VS6。

我现在已经将所有内容转换为 VS2008,包括所有编译、链接以及更重要的 - 运行!

==>但是...生成的编译 OBJ 文件大了 10 倍并且链接非常慢,链接器经常占用 >1GB 的内存。

部分含义是我需要使用/bigobj 编译某些项目。

结果是从桌面上的大约 1:45 到 3 小时的构建。DLL 和 LIB 的大小与旧 VS6 版本中的大小大致相同。

我已经阅读了所有我能在这里找到的内容,但没有找到解决这个问题的方法。如果它是额外的 DEBUG 信息 - 我不想要它。我以前受够了。版本中的大小增加了,但没有那么多......

有人知道吗?还是我将项目分解成更小的单元的唯一选择?重构是我唯一的希望吗?!肯定有一个我错过的 secret 标志......


编辑 1(2012 年 7 月 13 日 12:20 BST)我比较了 VS6 与 VS2008 创建的 Obj 的转储。 2008 年的那个 看起来 好像是“静态链接”。在 VS6 中,它包含一些全部来自当前 DLL 的符号。在 VS2008 中,它包含来自(可能)它所依赖的所有库的符号。 VS6 和 VS2008 的 Dumpbin 大小分别为 66kb 和 32,000kb。


最佳答案

检查您的调试选项。 /Z7 导致大型 .OBJ 文件,/Zi 将相同的信息放在单独的 .PDB 文件中。

编译器选项 /Oi 可能有助于内联内部函数,这样就不再需要链接了。无论如何,您可能不想调试 memset

关闭/Gm(增量重建),这样你就可以打开/MP(并行构建)。同时关闭 /Gy - 虽然它会生成更小的 EXE,但它会导致更大的 OBJ 文件和更慢的链接。

关于c++ - 与 VS6 相比,VS2008 C++ 编译中的巨大 OBJ 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11457001/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com