使用make在不同时间编译时,可能会导致二进制文件略有不同?

时间:2011-03-07 07:11:14

标签: makefile binaries

我使用make实用程序编译了代码并得到了二进制文件。

我通过makefile中的一些更改(在某些点插入-j)再次编译代码,并在二进制文件中略有不同。差异是通过“超越比较”报告的。为了进一步检查,我再次编译代码而没有在makefile中进行更改,发现二进制文件仍然不同。

为什么在不同时间编译的相同代码会导致二进制文件略有不同(大小和内容)?如何检查我所做的更改是否合法且二进制文件在逻辑上是否相同?

请问我任何进一步的解释。

2 个答案:

答案 0 :(得分:1)

你还没有说过你正在构建什么(C,C ++等),但如果它是时间戳,我不会感到惊讶。

您可以找到您正在构建的二进制类型的格式(这取决于您的操作系统),并查看在该位置发生更改的时间戳是否有意义。

最简单的方法是在一个微小的示例程序上执行此操作,该程序将生成一个非常小的二进制文件,以便更容易找出所有内容的含义。

答案 1 :(得分:0)

ELF目标文件包含编译它们的时间戳。因此,每次编译时(在Linux或Solaris上)都可以获得不同的目标文件。您也可以在其他目标文件系统中找到相同的内容。