【笔记】Go项目交叉编译

前言

在编译前指定不同的环境变量,从而实现交叉编译
不同的操作系统修改环境变量的方式不尽相同,详见修改Go环境变量的方式
本编以在MacOS上进行交叉编译为例

准备工作

禁用CGO

1
export CGO_ENABLED=0

编译为Windows平台可执行文件

1
2
3
export GOOS=windows; export GOARCH=arm; go build main.go
export GOOS=windows; export GOARCH=amd64; go build main.go
export GOOS=windows; export GOARCH=386; go build main.go

编译为Linux平台可执行文件

1
2
3
4
5
6
7
8
9
10
11
export GOOS=linux; export GOARCH=mips; go build main.go
export GOOS=linux; export GOARCH=mipsle; go build main.go
export GOOS=linux; export GOARCH=s390x; go build main.go
export GOOS=linux; export GOARCH=mips64le; go build main.go
export GOOS=linux; export GOARCH=mips64; go build main.go
export GOOS=linux; export GOARCH=arm64; go build main.go
export GOOS=linux; export GOARCH=ppc64; go build main.go
export GOOS=linux; export GOARCH=ppc64le; go build main.go
export GOOS=linux; export GOARCH=arm; go build main.go
export GOOS=linux; export GOARCH=amd64; go build main.go
export GOOS=linux; export GOARCH=386; go build main.go
1
2
3
export GOOS=linux; export GOARM=5; export GOARCH=arm64; go build main.go
export GOOS=linux; export GOARM=6; export GOARCH=arm64; go build main.go
export GOOS=linux; export GOARM=7; export GOARCH=arm64; go build main.go

编译为MacOS平台可执行文件

1
2
export GOOS=darwin; export GOARCH=amd64; go build main.go
export GOOS=darwin; export GOARCH=arm64; go build main.go

完成

参考文献

知乎——刘sir
博客园——极速快码
博客园——springsnow
稀土掘金——acejunnan
Go Programming Language Wiki