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
验证。编译为 386
和 amd64
的二进制文件有很大不同(编译为 amd64
明显更大),但如果体系结构相同但 OS 应该接近。
Go 版本本身也很重要,Go 1.7 减少了编译二进制文件的大小。有关详细信息,请参阅博客 post Smaller Go 1.7 binaries。
我也假设它是相同的,但是是否排除调试信息可以显着减少编译后的二进制文件大小。
我有一个用 Golang 编写的基于 gorilla/mux 的 Web 服务。 我观察到,完全相同的代码在我的 Windows 10 Pro 机器上生成的二进制文件大小超过 10 MB,而在我同事的 Windows 10 Pro 机器上生成的二进制文件大小约为 7 MB。 在另一位同事的 MacBook Pro 运行 OS X Yosemite 上,二进制文件的大小略高于 11 MB。 这个二进制文件实际包含什么?!
这可能是由于不同的体系结构(GOARCH
环境变量)。 运行 go env
验证。编译为 386
和 amd64
的二进制文件有很大不同(编译为 amd64
明显更大),但如果体系结构相同但 OS 应该接近。
Go 版本本身也很重要,Go 1.7 减少了编译二进制文件的大小。有关详细信息,请参阅博客 post Smaller Go 1.7 binaries。
我也假设它是相同的,但是是否排除调试信息可以显着减少编译后的二进制文件大小。