1. 交叉编译
一个平台上可以生成另一个平台的可执行代码。例如在64为windows操作系统开发环境上,生成linux上的可执行程序
2. 环境变量详解
2.1 常用环境变量
set GO111MODULE=on // 启用go mod
set GOARCH=amd64 // 程序构建环境的目标CPU架构
set GOBIN= // 开发程序编译后二进制命令的安装目录
set GOHOSTARCH=amd64 // 主机CPU架构
set GOHOSTOS=windows // 主机操作系统
set GOMODCACHE=E:\goproject\pkg\mod // go mod下载的包的目录
set GOOS=windows // 程序构建环境的目标操作系统
set GOPATH=E:\goproject // 工作目录
set GOPROXY=https://goproxy.cn,direct // 代理
set GOROOT=D:\go1.17.4 // go安装目录
set GOVERSION=go1.17.4 // go版本
2.2 cgo相关环境变量
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1 // 设置CGO工具,允许在Go代码中调用C代码
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
2.3 GOOS和GOARCH取值范围
GOOS和GOARCH的值成对出现,而且只能是下面列表对应的值
$GOOS $GOARCH
android arm
darwin 386
darwin amd64
darwin arm
darwin arm64
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
linux arm64
linux ppc64
linux ppc64le
linux mips
linux mipsle
linux mips64
linux mips64le
linux s390x
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
openbsd arm
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64
3. 如何操作
Go语言进行交叉编译只需要设置GOOS和GOARCH这两个环境变量就可以了 。但是由于Go默认是开启cgo工具,而Go交叉编译暂不支持CGO,所以需要禁用它 参考资料
windows
set CGO_ENABLED=0
set GOARCH=amd64
set GOOS=linux
go build xxx.go
Linux
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build xxx.go