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

我使用make实用程序编译了代码并得到了二进制文件。 我在makefile中进行了一些更改后再次编译代码(在某些点插入
-j
)并在二进制文件中略有不同。差异是通过“超越比较”报告的。为了进一步检查,我再次编译代码而没有在makefile中进行更改,发现二进制文件仍然不同。 为什么在不同时间编译的相同代码会导致二进制文件略有不同(大小和内容)?如果检查我所做的更改是否合法以及二进制文件在逻辑上是否相同,应该怎样? 请问我有任何进一步的解释。     
已邀请:
你还没有说你正在构建什么(C,C ++等),但如果它是一个时间戳,我不会感到惊讶。 您可以找到您正在构建的二进制类型的格式(这取决于您的操作系统),并查看在更改的位置是否有时间戳是否有意义。 在一个微小的示例程序上执行此操作可能最容易,该程序将生成一个非常小的二进制文件,以便更容易计算出一切意味着什么。     
ELF目标文件包含编译它们的时间戳。因此,每次编译时(在Linux或Solaris上)都可以获得不同的目标文件。您也可以在其他目标文件系统中找到相同的内容。     

要回复问题请先登录注册