为啥生成 pdb 文件会导致静态链接库的大小大幅增加?
Posted
技术标签:
【中文标题】为啥生成 pdb 文件会导致静态链接库的大小大幅增加?【英文标题】: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 文件内容的理解。 【参考方案1】:静态库增长的原因是因为 PDB 文件的完全限定路径名与 .lib 文件中的每个目标文件相关联。
因此,如果您的 PDB 文件名长度为 30 个字符,并且您在 .lib 中有 100 个目标文件,那么总文件大小将至少增加 3000 个字节。
这对于 .DLL 或 .EXE 文件来说不是问题,因为它们只包含一个引用 PDB 文件名。
【讨论】:
以上是关于为啥生成 pdb 文件会导致静态链接库的大小大幅增加?的主要内容,如果未能解决你的问题,请参考以下文章