2012-01-04 26 views
1

我有一個編譯的精靈文件,我想驗證使用的優化級別。問題是如何從對象/精靈確定優化級別?如何從文件中確定優化級別?

我已經嘗試過使用「文件」命令和「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

回答

2

不,一般。編譯器不會將其活動的「優化」設置寫入目標文件,也不一定可以從目標代碼本身確定。

+0

謝謝。我希望它可以做到這一點。那麼我必須解決這個問題。 – tothphu 2012-01-04 03:30:36

+1

有時,您可以在.comments部分查看編譯器和鏈接器的命令行選項。當使用ARM RVCT工具時,我認爲「fromelf -v」會轉儲顯示命令行的註釋部分,但我不確定objdump/elfdump或其他工具是否如此 – NullPointer 2012-01-04 11:04:38

2

strings foo.o | grep -- -O可能會給你你想要的。