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