c - Solaris cc 是否在可执行文件中嵌入了不同编译的不同信息?

标签 c compiler-construction solaris binary-reproducibility

你好,

之前有人问过 VC++,但我对 Solaris 的答案很感兴趣。

我正在编译和链接以下简单的 C 代码:

#include <stdio.h>

int main() {
    printf("Hello world!\n");
    return 0;
}

使用命令:

cc -o hello1 hello.c

并重复执行几次以获得可执行文件 hello2 和 hello3。这是在同一台机器上使用相同的编译器在不同的时间在同一目录中完成的。

可执行文件的大小相同,但 diff 报告二进制文件不同,并且 cmp -l 会因为一长串不同的位置而变得疯狂。

有谁知道可执行文件中嵌入了什么 cc 来使它们不同?时间戳?

编辑:按照 Chris 下面的建议剥离可执行文件,使 diff 报告两个可执行文件相同。

干杯,

最佳答案

如果您对这两个二进制文件使用“od -c”,然后使用并排比较程序,您可以了解不同之处。以前我调查 Sun 编译器时,通常是日期字符串。您还可以尝试剥离可执行文件,看看是否删除了其中存在差异的 ELF 部分。

关于c - Solaris cc 是否在可执行文件中嵌入了不同编译的不同信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662126/

相关文章:

C 编译器 : arrays as function parameters

regex - grep 或命令不工作 unix solaris

c - 二维数组增量

c - 链表错误

c++ - 用于读取音频文件的库

parsing - 构建 LR(1) 配置前瞻

c - 没有找到GDK函数

c# - 为什么默认情况下只有文字字符串保存在实习生池中?

tomcat - 如何安装 VeriSign 的中间 CA 证书?

linux - 单行输入的sed命令