【问题标题】:Why is generating pdb file causing static linked library to increase largely in size?为什么生成 pdb 文件会导致静态链接库的大小大幅增加?
【发布时间】:2014-10-15 10:41:09
【问题描述】:

在构建小型应用程序 (LZO) 时,我注意到发布版本没有生成 pdb 文件。我们通常倾向于生成(但不是必须部署)pdb 文件以及库本身。

现在我使用/Zi 开关打开 pdb 文件并注意到一个奇怪的地方。 pdb 文件生成良好,大约 100kb,但静态链接器库从 259 kb 增长到 622 kb,我不明白为什么。

Here is a related thread可执行文件的讨论增长,但由于我没有构建最终的可执行文件,因此没有代码没有被优化掉(/OPT:NOREF 开关)。

我希望 pdb 文件包含代码的哪一部分属于源等的地址,当然我希望 lib 文件包含 pdb 位置的编译路径,但是使用十六进制编辑器读取更大的 lib 会发现一个很大的大量的视觉工作室路径,自己的包含路径等被编译到其中。加上一些非文本二进制数据。 为什么这是在 lib 本身而不是在 pdb 中导致 lib 增长?

【问题讨论】:

  • 这个问题只是出于好奇还是会给您带来问题?
  • @RogerRowland 没问题,它只是不符合我目前对 lib 文件内容的理解。

标签: c++ visual-c++


【解决方案1】:

静态库增长的原因是因为 PDB 文件的完全限定路径名与 .lib 文件中的每个目标文件相关联。

因此,如果您的 PDB 文件名长度为 30 个字符,并且您在 .lib 中有 100 个目标文件,那么总文件大小将至少增加 3000 个字节。

这对于 .DLL 或 .EXE 文件来说不是问题,因为它们只包含一个引用 PDB 文件名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2015-03-14
    • 1970-01-01
    • 2021-07-03
    相关资源
    最近更新 更多