交叉编译是指在一个硬件平台生成另一个硬件平台的可执行文件。而Go提供了非常方便的交叉编译方式。
如何编译
Go交叉编译,涉及到几个环境变量的设置: GOARCH、GOOS和CGO_ENABLED。
-
GOARCH:编译目标平台的硬件体系架构(amd64, 386, arm, ppc64等)。
-
GOOS:编译目标平台上的操作系统(darwin, freebsd, linux, windows)。
-
CGO_ENABLED:代表是否开启CGO,1表示开启,0表示禁用。由于CGO不能支持交叉编译,所以需要禁用。
GO中env的具体环境变量的注释,可通过输入命令go help environment查看。
~ $ go help environment
...
GOARCH
The architecture, or processor, for which to compile code.
Examples are amd64, 386, arm, ppc64.
...
GOOS
The operating system for which to compile code.
Examples are linux, darwin, windows, netbsd.
...
CGO_ENABLED
Whether the cgo command is supported. Either 0 or 1.
Mac 下编译 Linux 和 Windows 64位可执行程序
export CGO_ENABLED=0 GOOS=linux GOARCH=amd64 g