コンパイル済みのelfファイルがあり、使用する最適化レベルを確認したいと思います。問題は、どのようにオブジェクト/ elfから最適化レベルを決定できますか?ファイルから最適化レベルを決定するにはどうすればよいですか?
私は "ファイル"コマンドと "objdump"(ほとんどのスイッチ)を試しましたが、どれもこれを明らかにしていません。まったく可能ですか?
コンパイル済みのelfファイルがあり、使用する最適化レベルを確認したいと思います。問題は、どのようにオブジェクト/ elfから最適化レベルを決定できますか?ファイルから最適化レベルを決定するにはどうすればよいですか?
私は "ファイル"コマンドと "objdump"(ほとんどのスイッチ)を試しましたが、どれもこれを明らかにしていません。まったく可能ですか?
いいえ、一般的ではありません。コンパイラは、アクティブな "最適化"設定をオブジェクトファイルに書き込まず、オブジェクトコード自体から必ずしも決定することはできません。
ありがとうございます。私はそれがそうすることを望んでいた。私は問題を回避しなければなりません。 – tothphu
コンパイラとリンカのコマンドラインオプションを.commentsセクションで表示することがあります。 ARM RVCTツールを使用しているときは、 "fromelf -v"はコマンドラインを表示するコメントセクションをダンプすると思いますが、objdump/elfdumpや他のツールがそうしているかどうかはわかりません – NullPointer
strings foo.o | grep -- -O
あなたが望むものを与えるかもしれません。
最近のGCCでは '#pragma GCC optimize'を受け付けるので、最適化レベルは関数から別のものに変わることがあります。だからあなたの質問には正確な意味はない。 –
私は参照してください。このような最適化の背景は何ですか? – tothphu
私はあなたの質問を理解していません。 '#pragma GCC optimize'は必要な最適化レベルを変更することができます。あなたはそれを使用することができます。残りのソースファイルが '-O0 -g'でコンパイルされていても、いくつかの特定の関数が常に' -O2'でコンパイルされるように要求します。 –