25

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

4

4 回答 4

24

快速浏览一下 GCC 文档并没有发现任何问题。

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


(后来添加): 如果在编译代码时要求,GCC 在 4.3 中具有此功能

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

于 2008-10-09T22:58:46.403 回答
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$

我认为这是一个不,因为二进制文件是相同的。

于 2008-12-04T14:51:43.247 回答
3

我是最初要求 Brian 发布此内容的人。我的问题与 samba 二进制文件有关。我发现您可以运行smb -b以获取有关其构建方式的信息。

于 2008-10-10T15:29:22.507 回答
2

我不这么认为。

您可以查看它是否具有调试符号,这意味着使用了 -g ;) 但是我想不出任何方法可以找出哪些目录已用于搜索包含标题。

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

于 2008-10-09T22:01:37.330 回答