静态库 - 调试还是发布?

时间:2016-01-06 10:08:53

标签: c++ linux gcc static

我来自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)。我怀疑一些调试信息丢失了。

我现在有两个问题:

  1. 我是否正确地声明静态.a库是一个包含所有必要调试信息的调试文件?
  2. 是否在linux中生成了发布静态库(准备在最终产品中链接,静态库,没有调试信息)?如果他们是,我怎么能做一个?

1 个答案:

答案 0 :(得分:0)

二进制文件,无论是静态库,动态库,可执行程序还是其他任何东西,都可能包含或不包含调试信息。它是您的编译选项,用于确定是否应生成更好的调试信息。例如,对于gcc,请参阅:https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html