检测二进制文件的GCC编译时标志

有没有办法找出编译特定二进制文件的gcc标志?

快速浏览GCC文档并没有改变任何事情。

Boost家伙是那些最聪明的C ++开发人员,他们采用命名约定,因为这通常是不可能的任何其他方式(可执行文件可以用任意数量的语言创建,毕竟可以通过任意数量的编译器版本创建) )。


(稍后添加): 如果在编译代码时询问,GCC在4.3中有此function :

新的命令行开关-frecord-gcc-switches …导致用于调用编译器的命令行被记录到正在创建的目标文件中。 此记录的确切格式取决于目标和二进制文件格式,但它通常采用包含ASCII文本的注释部分的forms。

实validation明:

diciu$ gcc -O2 /tmp/tt.c -o /tmp/a.out.o2 diciu$ gcc -O3 /tmp/tt.c -o /tmp/a.out.o3 diciu$ diff /tmp/a.out.o3 /tmp/a.out.o2 diciu$ 

我把它视为不,因为二进制文件是相同的。

我是那个让Brian最初发布这个post的人。 我的问题与samba二进制文件有关。 我发现你可以运行smb -b来获取它是如何构建的信息。

我不这么认为。

您可以看到它是否有调试符号,这意味着使用了-g;但是我无法想出如何找出用于搜索包含头的目录。

如果您只针对特定的旗帜,也许可以有更好的答案; 例如,如果你只是想知道在编译这个二进制文件时是否设置了标志“…”。 在那种情况下,这会是什么旗帜?