检测二进制文件的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;但是我无法想出如何找出用于搜索包含头的目录。
如果您只针对特定的旗帜,也许可以有更好的答案; 例如,如果你只是想知道在编译这个二进制文件时是否设置了标志“…”。 在那种情况下,这会是什么旗帜?