繁体   English   中英

静态库-调试还是发布?

[英]Static library - debug or release?

我来自Windows,使用gcc生成了C ++静态库(libMyLib.a)。

在Windows中,您实际上可以生成带有调试信息且未优化的调试静态库(.lib)。 那么您还可以生成一个发布静态库(.lib),而无需调试信息,并且可以在最终产品中进行静态链接。

我做了

$ objdump --syms libMyLib.a | grep "debug"

并有一堆线像

0000000000002ea0 l     F .text  00000000000001fc _ZN12_GLOBAL__N_121debugMyFunction2Ejllj

因为有'debug'后缀,所以我相信这个静态库是一个调试库,其中嵌入了调试信息。 我不确定为什么它与Windows操作系统相比要小得多(Windows操作系统只有300 MB,Linux操作系统只有13 MB)。我怀疑缺少一些调试信息。

我现在有两个问题:

  1. 我是否正确地说静态.a库是包含所有必需调试信息的调试库?
  2. 是否在linux中生成了发布静态库(已准备好在最终产品中链接,静态库,没有调试信息)? 如果是的话,我该怎么做?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM