天儿真好,
以前曾经问过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报告两个可执行文件完全相同。
欢呼声,
答案 0 :(得分:2)
如果你在两个二进制文件上使用“od -c”,然后使用并排差异程序,你就可以知道差异是什么。在我调查Sun编译器的过去,它通常是一个日期字符串。您还可以尝试剥离可执行文件,以查看是否删除了具有差异的ELF部分。
答案 1 :(得分:1)
如果您使用完全相同的源代码并使用Sun的编译器对其进行两次编译,则不将获得两个完全二进制重复的文件。会有细微的差别。据我所知,它主要归结为日期/时间问题。