有没有办法知道在编译时使用了哪些选项?

rsj*_*ani 3 compiling gcc

看看下面的命令行:

gcc -o hello -Wall -D_BSD_SOURCE hello-world.c
Run Code Online (Sandbox Code Playgroud)

现在,有没有办法通过对“hello”可执行文件进行一些处理来了解这些选项。

Mir*_*anc 8

可悲的是没有。但是如果你在创建二进制文件之前考虑一下,有一些方法。这是另一个。使用最近的 gcc,您可以使用 -frecord-gcc-switches 选项,该选项将向 ELF 文件添加一个部分,其中包含您正在寻找的描述。

$ 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
Run Code Online (Sandbox Code Playgroud)

如您所见,它显示了所有使用的选项,而不仅仅是您明确提供的选项。