壹 介绍
Golang
其中一个优势就是支持交叉编译,顾名思义就是可以在一个平台编译其他平台的可执行程序。
一般情况下,Golang
的交叉编译有三个主要的参数控制:
CGO_ENABLED:该参数是允许调用C/C++的参数,但是在交叉编译中不支持 CGO 所以要禁用它
GOOS:该参数是编译后的可执行程序适配的目标平台操作系统(darwin、freebsd、linux、windows)
GOARCH:该参数是编译后的可执行程序适配的目标平台的体系架构(386、amd64、arm)
贰 使用Golang的交叉编译
Windows
下编译Mac
和Linux 64
位可执行程序
# 网上用的SET,但是我发现我用SET不行,我用的是go env -w
go env -w CGO_ENABLED=0
go env -w GOOS=darwin
go env -w GOARCH=amd64
go build main.go
go env -w CGO_ENABLED=0
go env -w GOOS=linux
go env -w GOARCH=amd64
go build main.go
Mac
下编译Linux
和Windows 64
位可执行程序
export CGO_ENABLED=0
export GOOS=linux
export GOARCH=amd64
go build main.go
export CGO_ENABLED=0
export GOOS=windows
export GOARCH=amd64
go build main.go
Linux
下编译Linux
和Windows 64
位可执行程序
export CGO_ENABLED=0
export GOOS=darwin
export GOARCH=amd64
go build main.go
export CGO_ENABLED=0
export GOOS=windows
export GOARCH=amd64
go build main.go
上面的是amd64
的,当然其他架构的也可以,根据实际情况选择,编译完后,放到对应系统平台中即可运行(PS:权限问题)。