コンパイル時にどのオプションが使用されたかを知る方法はありますか?

コンパイル時にどのオプションが使用されたかを知る方法はありますか?

次のコマンドラインを見てください。

gcc -o hello -Wall -D_BSD_SOURCE hello-world.c

「hello」実行可能ファイルに対していくつかの処理を実行してこれらのオプションを理解する方法はありますか?

ベストアンサー1

残念ながらそうではありません。しかし、バイナリを作る前に考えてみると、いくつかの方法があります。ここにもう一つあります。最近のgccでは、探している説明を含むELFファイルにセクションを追加する-frecord-gcc-switchesオプションを使用できます。

$ gcc -frecord-gcc-switches -o hello -Wall -D_BSD_SOURCE hello-world.c
$ readelf -p .GCC.command.line hello

String dump of section '.GCC.command.line':
  [     0]  -D _BSD_SOURCE
  [     f]  hello-world.c
  [    1d]  -mtune=generic
  [    2c]  -march=x86-64
  [    3a]  -Wall
  [    40]  -frecord-gcc-switches

ご覧のとおり、明示的に提供されたオプションだけでなく、使用されているすべてのオプションも表示されます。

おすすめ記事