我想检查编译的库是DEBUG MODE还是RELEASE MODE。
我找到了objdump --syms
,但似乎没有用。我尝试了objdump --syms *.a | grep debug
objdump --syms *.a | grep release
。但是两者都不打印。
如何在Linux中检查库的编译类型?
最佳答案
严格来说,对于Linux中的库,没有“调试”或“发布”模式这样的概念。 gcc
可以生成带有或不带有调试符号的库,以后可以由gdb
调试器使用,以及带有或不带有优化。调试符号输出由编译任何单元时传递给gcc的-g
选项控制,优化由-O1
,-O2
和-O3
标志控制,以实现不同级别的优化。
假设您要查找该库是否包含调试符号,则已经为其运行了正确的命令:objdump --syms *.a | grep debug
通常为确实包含调试符号的对象生成非空输出。因为没有术语“发布”,所以用“发布”一词过滤输出将不会为您提供有关库的编译方法的任何信息。
还要注意,许多开放源代码库都是分布式编译的,同时启用了调试符号和优化功能,因此将“调试”和“发行”混为一谈。