我来自Windows,我使用gcc生成了一个C ++静态库(libMyLib.a)。
在Windows中,您实际上可以使用调试信息生成调试静态库(.lib)并且未经优化;那么你也可以生成一个没有调试信息的发布静态库(.lib),并且意味着静态链接到最终产品中。
我做了
$ objdump --syms libMyLib.a | grep "debug"
并获得了许多像
这样的行0000000000002ea0 l F .text 00000000000001fc _ZN12_GLOBAL__N_121debugMyFunction2Ejllj
因为有“调试”和“调试”。后缀我相信这个静态库是一个调试信息,其中嵌入了调试信息。我不确定为什么这个比Windows更小(Windows为300 MB,Linux只有13 MB)。我怀疑一些调试信息丢失了。
我现在有两个问题:
答案 0 :(得分:0)
二进制文件,无论是静态库,动态库,可执行程序还是其他任何东西,都可能包含或不包含调试信息。它是您的编译选项,用于确定是否应生成更好的调试信息。例如,对于gcc,请参阅:https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html