确定 ELF 二进制文件是否经过优化构建
identify whether an ELF binary is built with optimizations
我知道我们可以使用 cmake 或 make 来控制 CFLAGS
或 CXXFLAGS
手动构建发布版本。 release
版本对我来说意味着至少给出了 -O2
或 -O3
,执行 -g
或 strip
并不重要,而 debug
给出 -O0
.
但有时我想使用脚本来确定 elf 二进制文件是否是通过优化构建的,这样我就可以决定下一步该做什么。我尝试了 objdump
或 file
或 readelf
,但没有找到答案。有什么替代方法可以做到这一点吗?
However sometimes I want use scripts to decide whether an elf binary was built with optimizations, so I can decide what to do next.
您问题的问题是您的二进制文件很可能包含 一些 优化代码(例如 crt0.o
-- GLIBC 的一部分)。
您最终的二进制文件由一堆目标文件组成,这些文件不需要具有一致的优化标志。
很可能您只关心您编写的代码(而不是从其他库链接的代码)。您可以为此使用 -frecord-gcc-switches
。参见 this answer。
我知道我们可以使用 cmake 或 make 来控制 CFLAGS
或 CXXFLAGS
手动构建发布版本。 release
版本对我来说意味着至少给出了 -O2
或 -O3
,执行 -g
或 strip
并不重要,而 debug
给出 -O0
.
但有时我想使用脚本来确定 elf 二进制文件是否是通过优化构建的,这样我就可以决定下一步该做什么。我尝试了 objdump
或 file
或 readelf
,但没有找到答案。有什么替代方法可以做到这一点吗?
However sometimes I want use scripts to decide whether an elf binary was built with optimizations, so I can decide what to do next.
您问题的问题是您的二进制文件很可能包含 一些 优化代码(例如 crt0.o
-- GLIBC 的一部分)。
您最终的二进制文件由一堆目标文件组成,这些文件不需要具有一致的优化标志。
很可能您只关心您编写的代码(而不是从其他库链接的代码)。您可以为此使用 -frecord-gcc-switches
。参见 this answer。