你好,
之前有人问过 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/