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