在Visual C二进制重现++(Binary Reproducibility in Visual

2019-07-04 06:47发布

有没有办法迫使相同的代码来生成在Visual C ++相同的二进制? 关闭时间戳在PE或强制时间戳的PE是一些固定值,换句话说?

Answer 1:

这不仅是一个标记-有用于PDB匹配的嵌入式GUID -约翰·罗宾斯解释说 。

即使除此之外,这里还有没有办法强迫编译器生成一致的结果,正如吉姆Griesmer 解释 -

编译器作者都远远更感兴趣的是产生正常的代码,并快速生成比确保无论是生成的相同奠定了你的硬盘上。 由于许多各种各样的方法和实施优化的代码,它始终是可能的一个积累结束了一个多一点时间做一些额外的或不同比另一个构建做了。 因此,最后的结果可能是什么相同的功能一组不同的位。

因此,功能和小节的顺序不能保证在所得到的PE被一致地排序。 一个例子是在链路。



Answer 2:

我想你可以写一个实用工具,打开PE,校验设置为0,设置时间戳你喜欢什么,重新计算CRC,然后写回来了。 这将是很好,如果有,以确保最佳二重复性的官方途径,虽然。

欲了解更多信息: http://msdn.microsoft.com/en-us/magazine/cc301805.aspx



文章来源: Binary Reproducibility in Visual C++