相同的源但不同的二进制文件

问题描述 投票:0回答:1

我有一个WinCE6000 OSDesign,但由于历史原因,文件夹下有MS不推荐的修改和额外模块。因此,我们开始将不属于原始 MS 交付的所有内容移至另一个文件夹<3rdParty>。

您可能知道 WinCE 有一个复杂的构建机制,但无论如何,在我们完成重构后,我们设法运行 SYSGEN。以前我们被迫运行 Build & SysGen 来获取 nk.bin

我们想到了一种机制来确保重构后没有任何改变。验证包括将重构的构建树与现有的源树进行比较。我们比较了ce.bib文件的内容,文件的内容、数量和名称是相同的。但后来我们意识到一些二进制文件具有不同的大小。比较这些 exe 和二进制文件后,我们发现文件存在差异。但这没有意义。因为我们没有修改任何源代码。我们所做的只是将一些模块移动到另一个位置并修改源文件。

我们在 Beyond Compare 和 PE 文件查看器中观察到的差异表明,有时 .text 部分和有时 .data 部分是不同的。

我们希望确保重构不会通过功能影响结果图像。我们知道 PE 格式有时间戳,但我想它们不会产生 2K 的二进制大小。

你们中有人遇到过这样的问题吗?

windows-ce disassembly portable-executable
1个回答
1
投票

MS 这里有一篇自我解释的帖子。 http://support.microsoft.com/kb/164151

注意:无法保证 Visual C++ 在连续构建中构建相同的源文件时会生成相同的二进制映像。但是,在所有其他条件相同的情况下,可以保证 EXE(或 DLL)在执行时的行为方式完全相同。编译和链接选项以及链接顺序会影响两个二进制图像是否会同等比较。

© www.soinside.com 2019 - 2024. All rights reserved.