2012-01-04 10 views
1

コンパイル済みのelfファイルがあり、使用する最適化レベルを確認したいと思います。問題は、どのようにオブジェクト/ elfから最適化レベルを決定できますか?ファイルから最適化レベルを決定するにはどうすればよいですか?

私は "ファイル"コマンドと "objdump"(ほとんどのスイッチ)を試しましたが、どれもこれを明らかにしていません。まったく可能ですか?

+2

最近のGCCでは '#pragma GCC optimize'を受け付けるので、最適化レベルは関数から別のものに変わることがあります。だからあなたの質問には正確な意味はない。 –

+0

私は参照してください。このような最適化の背景は何ですか? – tothphu

+0

私はあなたの質問を理解していません。 '#pragma GCC optimize'は必要な最適化レベルを変更することができます。あなたはそれを使用することができます。残りのソースファイルが '-O0 -g'でコンパイルされていても、いくつかの特定の関数が常に' -O2'でコンパイルされるように要求します。 –

答えて

2

いいえ、一般的ではありません。コンパイラは、アクティブな "最適化"設定をオブジェクトファイルに書き込まず、オブジェクトコード自体から必ずしも決定することはできません。

+0

ありがとうございます。私はそれがそうすることを望んでいた。私は問題を回避しなければなりません。 – tothphu

+1

コンパイラとリンカのコマンドラインオプションを.commentsセクションで表示することがあります。 ARM RVCTツールを使用しているときは、 "fromelf -v"はコマンドラインを表示するコメントセクションをダンプすると思いますが、objdump/elfdumpや他のツールがそうしているかどうかはわかりません – NullPointer

2

strings foo.o | grep -- -Oあなたが望むものを与えるかもしれません。

関連する問題