gpt4 book ai didi

c++ - 不同系统上的相同构建

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:36 25 4
gpt4 key购买 nike

我有 3 台构建机器。一种在 Windows 2000 上运行,一种使用 XP SP3,另一种使用 64 位 Windows Server 2008。我有一个要构建的 native C++ 项目(我正在使用 visual studio 2005 SP1 构建)。我的目标是使用这些构建机器构建“完全”相同的 dll。

我的意思是一点一点(当然除了构建时间戳)。

对于 win2k 和 winxp,我得到相同的 dll。但它们与使用 win2008 服务器构建的 dll 不同。我设法获得了几乎相同的 dll,但存在一些差异。反汇编文件后发现函数顺序不一样(3个函数顺序不同)。

有人知道这是什么原因吗?

还有一个附带问题:在 vcbuild.exe 中,我找到了一个开关/ORDER。它将函数命令文件作为输入。任何人都知道该文件应该是什么样子?

最佳答案

您可能认为编译是纯粹确定性的(相同的输入每次都会产生相同的输出),但事实并非如此。例如,考虑优化器——这将需要一些内存来工作,对于更高的优化方法可能需要更多。如果在一台机器上内存分配失败(因为机器内存较少),那么编译器可能会忽略该特定优化,从而导致发出不同的代码。

有很多类似的情况,所以你可能在做一些不可行的事情上付出了很多努力。无论如何,为什么您需要 DLL 按位相同?

关于c++ - 不同系统上的相同构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1221185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com