- 1. Golang的交叉编译说明
- 2. 交叉编译
- 2.1 ️ 编译x86架构上的windows版本
- 2.2 ️ 编译x86架构上的linux版本
- 2.3 ️ 编译arm架构上的linux版本
1. Golang的交叉编译说明
golang中交叉编译非常简单。
直接在windows上设置几个Go环境变量便可以编译多种架构多个操作系统的可执行程序。
https>go env set GO111MODULE=auto set GOARCH=amd64 set GOBIN= set GOCACHE=C:UsersAdminAppDataLocalgo-build set GOENV=C:UsersAdminAppDataRoaminggoenv set GOEXE=.exe set GOFLAGS= set GOHOSTARCH=amd64 set GOHOSTOS=windows set GOINSECURE= set GOMODCACHE=F:golangmyGopkgmod set GONOPROXY= set GONOSUMDB= set GOOS=windows set GOPATH=F:golangmyGo set GOPRIVATE= set GOPROXY=https://goproxy.io set GOROOT=E:Go set GOSUMDB=sum.golang.org set GOTMPDIR= set GOTOOLDIR=E:Gopkgtoolwindows_amd64 set GCCGO=gccgo set AR=ar set CC=gcc set CXX=g++ set CGO_ENABLED=1 set GOMOD=F:golangmyGosrcgo.mod set CGO_CFLAGS=-g -O2 set CGO_CPPFLAGS= set CGO_CXXFLAGS=-g -O2 set CGO_FFLAGS=-g -O2 set CGO_LDFLAGS=-g -O2 set PKG_CONFIG=pkg-config set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:UsersAdminAppDataLocalTempgo-build978777650=/tmp/go-build -gno-record-gcc-switches
交叉编译过程中需要修改其中三个变量即可,分别为:
- GOOS: 可执行程序未来运行在哪个操作系统上? windows or linux?
- GOARCH:可执行程序所在设备的CPU架构。x86? arm? Powerpc?
- CGO_ENABLED:交叉编译,禁用CGO
现在通过三个例子说明前两个参数的配置。
2. 交叉编译 2.1 ️ 编译x86架构上的windows版本set GOARCH=x86 set GOOS=windows set CGO_ENABLED=1 go build -o ./release/x86-windows/monitor.exe2.2 ️ 编译x86架构上的linux版本
set GOARCH=x86 set GOOS=linux set CGO_ENABLED=0 go build -o ./release/x86-linux/monitor.out2.3 ️ 编译arm架构上的linux版本
set GOARCH=arm64 set GOOS=linux set CGO_ENABLED=0 go build -o ./release/arm-linux/monitor.out
⚠️⚠️⚠️以上这部分设置环境变量的set操作均是在windows的cmd终端运行的,如果在powershell则无法设置成功



