为什么生成pdb文件会导致静态链接库的大小大幅增加
Why is generating pdb file causing static linked library to increase largely in size?
在构建小型应用程序(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文件名。
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- CMake-按正确顺序将项目与C运行时对象文件链接
- 从链接列表c++中删除一个项目
- 有根的二进制搜索树.保留与其父级的链接
- 读取文件的最后一行并输入到链接列表时出错
- 哪个链接更快?许多小的 .so 文件还是几个大的 .so 文件?
- 如何返回指向链接列表中最大值的指针
- 乘以两个表示为链接列表的大数字
- 做循环静态链接的LIB会导致更大的输出尺寸
- Boost序列化:XCode 5项目中的链接器错误,由CMake生成(带最小完整示例)
- 链接后的最小可执行文件大小
- Visual Studio静态链接的应用程序方式太小
- std::terminate() 链接器错误在一个小的 clang 项目上
- 为什么Visual Studio链接器无法打开非常大的静态库(>2.5GB)?
- 如果一个类不是直接从main中使用的,但有一个静态私有成员,那么在编译和链接时,可以使用最大优化来忽略它吗
- 构建最小的Qt控制台项目失败,出现神秘的链接器错误LNK2001:未解析的外部符号
- 使用链接查找数组中的最大值
- 为什么这个c++链接不能工作?(OSX小牛)
- 为什么要链接多个目标文件,而不是一个大的目标文件
- C++链接器错误 OSX 小牛队