为什么生成pdb文件会导致静态链接库的大小大幅增加

Why is generating pdb file causing static linked library to increase largely in size?

本文关键字:链接 小大 增加 静态 pdb 文件 为什么      更新时间:2023-10-16

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

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

以下是可执行文件的相关线程讨论增长,但由于我没有构建最终的可执行文件,因此没有未优化的代码(/OPT:NOREF开关)。

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

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

因此,如果你的PDB文件名是30个字符长,并且你在.lib中有100个对象文件,那么你将获得至少3000个字节的总文件大小。

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