如何从文件中确定优化级别?

问题描述:

我有一个编译的精灵文件,我想验证使用的优化级别。问题是如何从对象/精灵确定优化级别?如何从文件中确定优化级别?

我已经尝试过使用“文件”命令和“objdump”(大部分开关),但没有一个显示出来。它有可能吗?

+2

最近GCC接受'#pragma GCC optimize',所以优化级别可能会从on函数改变到另一个函数。所以你的问题甚至没有确切的意义。 – 2012-01-04 06:27:06

+0

我明白了。这种优化背后的原因是什么? – tothphu 2012-01-05 20:48:34

+0

我不明白你的问题。 '#pragma GCC optimize'可以改变所需的优化级别。你可以使用它,例如要求'-O2'中总是编译某个特定的函数,即使源文件的其余部分编译为'-O0 -g' – 2012-01-05 20:59:59

不,一般。编译器不会将其活动的“优化”设置写入目标文件,也不一定可以从目标代码本身确定。

+0

谢谢。我希望它可以做到这一点。那么我必须解决这个问题。 – tothphu 2012-01-04 03:30:36

+1

有时,您可以在.comments部分查看编译器和链接器的命令行选项。当使用ARM RVCT工具时,我认为“fromelf -v”会转储显示命令行的注释部分,但我不确定objdump/elfdump或其他工具是否如此 – NullPointer 2012-01-04 11:04:38

strings foo.o | grep -- -O可能会给你你想要的。