1. 交叉编译
一个平台上可以生成另一个平台的可执行代码。例如在64为windows操作系统开发环境上,生成linux上的可执行程序
2. 环境变量详解
2.1 常用环境变量
set GO111MODULE=on // 启用go modset 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=gccgoset AR=arset CC=gccset CXX=g++set CGO_ENABLED=1 // 设置CGO工具,允许在Go代码中调用C代码set CGO_CFLAGS=-g -O2set CGO_CPPFLAGS=set CGO_CXXFLAGS=-g -O2set CGO_FFLAGS=-g -O2set CGO_LDFLAGS=-g -O2
2.3 GOOS和GOARCH取值范围
GOOS和GOARCH的值成对出现,而且只能是下面列表对应的值
$GOOS $GOARCHandroid armdarwin 386darwin amd64darwin armdarwin arm64dragonfly amd64freebsd 386freebsd amd64freebsd armlinux 386linux amd64linux armlinux arm64linux ppc64linux ppc64lelinux mipslinux mipslelinux mips64linux mips64lelinux s390xnetbsd 386netbsd amd64netbsd armopenbsd 386openbsd amd64openbsd armplan9 386plan9 amd64solaris amd64windows 386windows amd64
3. 如何操作
Go语言进行交叉编译只需要设置GOOS和GOARCH这两个环境变量就可以了 。但是由于Go默认是开启cgo工具,而Go交叉编译暂不支持CGO,所以需要禁用它 参考资料
windows
set CGO_ENABLED=0set GOARCH=amd64set GOOS=linuxgo build xxx.go
Linux
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build xxx.go
