我知道我们可以使用cmake或make来控制CFLAGS
或CXXFLAGS
来手动构建发行版本。对我来说,release
版本意味着至少给出了-O2
或-O3
,执行了-g
或strip
都没有关系,而{{1} }被赋予debug
。
但是有时我想使用脚本来确定是否通过优化构建了elf二进制文件,因此我可以决定下一步要做什么。我尝试了-O0
或objdump
或file
,但没有找到答案。我可以做些其他选择吗?
答案 0 :(得分:2)
但是有时候我想使用脚本来确定是否通过优化构建了一个elf二进制文件,所以我可以决定下一步该怎么做。
您的问题的问题在于您的二进制文件很可能包含经过优化而构建的 some 代码(例如crt0.o
-GLIBC的一部分)。
您的最终二进制文件由一堆目标文件组成,并且这些文件不必必须具有一致的优化标志。
您很可能只在乎编写的代码(而不是从其他库链接的代码)。您可以使用-frecord-gcc-switches
。参见this answer。