0

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

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

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

请向我寻求任何进一步的解释。

4

2 回答 2

1

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

您可以找出您正在构建的二进制类型的格式(这将取决于您的操作系统),并查看在发生变化的地方存在时间戳是否有意义。

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

于 2011-03-07T07:15:59.900 回答
0

ELF 目标文件包含编译时的时间戳。因此,每次编译(在 Linux 或 Solaris 上)时,您都可以期待不同的目标文件。您也可能会发现其他系统的目标文件也是如此。

于 2011-03-07T07:49:15.710 回答