我想检查编译的库是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通常为确实包含调试符号的对象生成非空输出。因为没有术语“发布”,所以用“发布”一词过滤输出将不会为您提供有关库的编译方法的任何信息。

还要注意,许多开放源代码库都是分布式编译的,同时启用了调试符号和优化功能,因此将“调试”和“发行”混为一谈。

10-02 08:55