那棵树看起来生气了
golang交叉编译,如何编译可移植跨平台golang应用
06/03
golang交叉编译
Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,只需要按照我下面的这个环境变量表设置对应的环境变量就可以了
环境变量对照表
golang交叉编译环境变量对照表
GOOS | GOARCH | OS VERSION |
---|---|---|
linux | 386 / amd64 / arm | >= Linux 2.6 |
darwin | 386 / amd64 | OX X (Snow Leopard + Lion) |
freebsd | 386 / amd64 | >= FreeBSD 7 |
windows | 386 / amd64 | >= Windows 2000 |
使用
Windows
Windows 下编译 Mac 64位可执行程序
set CGO_ENABLED=0
set GOOS=darwin
set GOARCH=amd64
go build main.go
Windows 下编译 Linux 64位可执行程序
set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build main.go
linux
Linux 下编译 Mac 64位可执行程序
export CGO_ENABLED=0
export GOOS=darwin
export GOARCH=amd64
go build main.go
Linux 下编译 Windows 64位可执行程序
export CGO_ENABLED=0
export GOOS=windows
export GOARCH=amd64
go build main.go
Mac OS
Mac 下编译 Windows 64位可执行程序
export CGO_ENABLED=0
export GOOS=windows
export GOARCH=amd64
go build main.go
Mac 下编译 Linux 64位可执行程序
export CGO_ENABLED=0
export GOOS=linux
export GOARCH=amd64
go build main.go
备注
CGO_ENABLED解释
默认情况下,Go的runtime环境变量CGO_ENABLED=1,即默认开始cgo,允许你在Go代码中调用C代码
如果标准库中是在CGO_ENABLED=1情况下编译的,那么编译出来的最终二进制文件可能是动态链接,所以建议设置 CGO_ENABLED=0以避免移植过程中出现的不必要问题。
三合一收款
下面三种方式都支持哦