【发布时间】:2010-11-02 12:19:26
【问题描述】:
我有一个不寻常的问题。在我工作的公司,我们的代码库中有很多源代码,而且我们使用了很多第三方库。我们使用的是 MSVC 2005。
问题在于链接我们的可执行文件非常耗时(几分钟)。加上链接器的内存使用量达到 1.7 GB,而最终的可执行文件“只有”22 MB。
我们不使用 /ltcg(链接时代码生成)选项。
我猜链接器会立即加载所有依赖项的所有 OBJ 和 LIB。但是 OTOH 这实际上不是必需的:可以首先加载所有原始符号(没有相应的代码),构建依赖关系树。然后,使用这棵树,只加载相关的代码片段。
有人知道链接器的行为是否可以改变吗?也许存在相应的链接器选项。 这在 MSVC 2008/2010 中是否已修复?
谢谢
【问题讨论】:
-
也许不是您正在寻找的答案,但请考虑将所有 .lib 移动到 .dll。相应的库会变得很小,这将加快链接过程。
-
你是对的,我们考虑这个选项。然而,这会带来其他问题,例如所有 DLL 版本的混乱。谢谢。
-
我可能错了,但这对你有用吗? blogs.msdn.com/b/ddperf/archive/2010/04/29/…
标签: c++ c visual-studio