【发布时间】:2010-09-16 09:41:33
【问题描述】:
有没有办法找出特定二进制文件编译时使用的 gcc 标志?
【问题讨论】:
有没有办法找出特定二进制文件编译时使用的 gcc 标志?
【问题讨论】:
快速浏览 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 文本的注释部分的形式。
【讨论】:
实验证明:
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 发布此内容的人。我的问题与 samba 二进制文件有关。我发现您可以运行 smb -b 来获取有关它是如何构建的信息。
【讨论】:
我不这么认为。
您可以查看它是否有调试符号,这意味着使用了 -g ;) 但我想不出任何方法可以找出哪些目录已用于搜索包含标题。
如果您只针对特定标志,也许会有更好的答案;例如如果您只想知道在编译此二进制文件时是否设置了标志“...”。那么,这将是什么标志?
【讨论】: