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

时间:2008-10-09 21:53:45

标签: c++ c gcc

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

4 个答案:

答案 0 :(得分:23)

快速查看GCC文档并没有改变任何内容。

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


(稍后补充):Turns out GCC has this feature in 4.3 if asked for when you compile the code

  

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

答案 1 :(得分:12)

实验证明:

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$

我将其视为否,因为二进制文件是相同的。

答案 2 :(得分:3)

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

答案 3 :(得分:2)

我不这么认为。

你可以看看它是否有调试符号,这意味着使用了-g;但是我想不出怎样才能找出用于搜索包含头的目录。

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