从Mac到Windows,从Linux到Windows的交叉编译有区别吗?

时间:2017-09-14 17:23:42

标签: go cross-compiling

我的同事和我都在使用Go 1.9 x64。我正在运行Linux Mint 18.2并且他正在运行macOS Sierra 10.12.6。我们运行完全相同的脚本来交叉编译Windows x64的程序,出于好奇,我们对文件进行了分析以查看它们的相似程度。我们希望找到一些不同的构建参数或ID,但事实证明整个文件中存在很多差异。

meld <(hexdump -C one.exe) <(hexdump -C two.exe)

我们确保这两个程序是使用完全相同的代码构建的。该程序确实没有做任何特定于操作系统的事情。它读取JSON文件并执行由该文件确定的一系列Web请求。没有什么比执行shell命令或读/写Windows注册表更好的了。没有CGO,os包的唯一用途是os.Exit(code)次调用,没有什么能够成为罪魁祸首。

即使这些程序是从两个不同的主机操作系统构建的,它们都是为相同的目标操作系统构建的,具有相同版本的Go编译器和相同的代码文件。为什么输出二进制文件如此不同?

0 个答案:

没有答案