Golang - 为什么在相似的机器上编译会导致二进制文件大小明显不同?

Golang - why do compilations on similar machines result in significantly different binary file sizes?

我有一个用 Golang 编写的基于 gorilla/mux 的 Web 服务。 我观察到,完全相同的代码在我的 Windows 10 Pro 机器上生成的二进制文件大小超过 10 MB,而在我同事的 Windows 10 Pro 机器上生成的二进制文件大小约为 7 MB。 在另一位同事的 MacBook Pro 运行 OS X Yosemite 上,二进制文件的大小略高于 11 MB。 这个二进制文件实际包含什么?!

这可能是由于不同的体系结构(GOARCH 环境变量)。 运行 go env 验证。编译为 386amd64 的二进制文件有很大不同(编译为 amd64 明显更大),但如果体系结构相同但 OS 应该接近。

Go 版本本身也很重要,Go 1.7 减少了编译二进制文件的大小。有关详细信息,请参阅博客 post Smaller Go 1.7 binaries

我也假设它是相同的,但是是否排除调试信息可以显着减少编译后的二进制文件大小。