gpt4 book ai didi

c++ - VS 2013/Zi Compiler Option 使静态库的大小加倍

转载 作者:行者123 更新时间:2023-12-03 21:36:50 37 4
gpt4 key购买 nike

我想知道为什么在 VS 2013 下/Zi 编译器选项几乎使构建静态库的大小增加了一倍。

据我了解/Zi 选项,所有生成的调试信息都存储在 .pdb 文件中,并且只为每个 .obj 文件添加指向该文件的链接。

似乎只有 .exe 和 .dlls 文件大小保持不变,无论选项是/Zi 还是 None。

我只能用 VS 2013 测试这个,所以我不知道其他版本的 VS 是否也会发生这种情况。

最佳答案

这主要来自于.debug$S部分的增加。原因是当使用PDB时,并不是所有关于debug的东西都放到pdb中,调试符号仍然保存在h object/lib文件的.debug$S部分。放入 pdb 的内容至少包含类型信息,这就是使用/Zi 或/ZI 时 .debug$T 变得非常小的原因,即在这些情况下它仅包含指向 pdb 文件的指针。
您可以使用

dumpbin.exe your_lib.lib
来显示结果。
对于大型库,大小可以从 4MB 增加到 20MB。
对于一个非常简单的库:
无调试:
       4 .bss
60 .chks64
138 .debug$S
D2 .drectve
18 .pdata
8 .rtc$IMZ
8 .rtc$TMZ
2C .text$mn
10 .xdata
/子:
       4 .bss
98 .chks64
848 .debug$S
E0 .debug$T
113 .drectve
4 .msvcjmc
18 .pdata
8 .rtc$IMZ
8 .rtc$TMZ
76 .text$mn
10 .xdata
/ZI:
       4 .bss
C0 .chks64
1454 .debug$S
E0 .debug$T
135 .drectve
4 .msvcjmc
18 .pdata
8 .rtc$IMZ
8 .rtc$TMZ
89 .text$mn
20 .xdata
/Z7:调试信息现在嵌入到 .debug$P 部分,并且 .debug$S 也缩小了一点。
       4 .bss
98 .chks64
1210 .debug$P
848 .debug$S
78C .debug$T
113 .drectve
4 .msvcjmc
18 .pdata
8 .rtc$IMZ
8 .rtc$TMZ
76 .text$mn
10 .xdata

关于c++ - VS 2013/Zi Compiler Option 使静态库的大小加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34592527/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com