我想检查编译的库是否为DEBUG MODE或RELEASE MODE。
我找到objdump --syms
,但似乎无效。我尝试了objdump --syms *.a | grep debug
objdump --syms *.a | grep release
。但两者都没有打印。
如何在Linux中检查编译类型的库?
答案 0 :(得分:1)
严格地说,linux中的库没有“调试”或“发布”模式这样的概念。 gcc
可以生成带或不带调试符号的库,以后gdb
调试器可以使用它们,有或没有优化。调试符号输出由编译任何单元时传递给gcc的选项-g
控制,优化由标志-O1
,-O2
和-O3
控制,以用于不同的优化级别。
假设您想知道库是否包含调试符号,您已经为它运行了正确的命令:objdump --syms *.a | grep debug
通常为包含调试符号的对象生成非空输出。通过“发布”字过滤输出将不会提供有关库的编译方法的任何信息,因为没有术语“发布”。
另请注意,许多开源库都是分布式编译的,同时启用了调试符号和优化,因此将某些内容混合在一起被认为是“调试”和“发布”。