Golang交叉编译

后端 / 2020-07-28

何为交叉编译?

交叉编译是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。

应用场景

比如是我们的开发机是windows 然而我们的服务器是linux,我们为了多、快、好、省、 不想在服务器下安装 go环境,那么我们就需要用到交叉编译.在windows上开发并且编译出linux 下的程序,不得不说golang的跨平台能力实在是高!

通过这个我成功将windows 下的go程序完美移植到 树莓派上。

操作步骤

Golang交叉编译非常方便,我们只需要更改环境变量,然后 go build 即可交叉编译。

GOOS

这个环境变量代表,操作系统类型比如说我们要编译出 linux下的程序 我们就写

SET GOOS=linux

GOARCH

这个代表目标平台架构,比如说 arm adm wasm

交叉编译amd

SET GOOS=linux
SET GOARCH=amd64
go build

交叉编译arm

SET GOOS=linux
SET GOARCH=arm64
go build

支持列表

go tool dist list

OS ARCH

aix/ppc64
android/386
android/amd64
android/arm
android/arm64
darwin/386
darwin/amd64
darwin/arm
darwin/arm64
dragonfly/amd64
freebsd/386
freebsd/amd64
freebsd/arm
illumos/amd64
js/wasm
linux/386
linux/amd64
linux/arm
linux/arm64
linux/mips
linux/mips64
linux/mips64le
linux/mipsle
linux/ppc64
linux/ppc64le
linux/s390x
nacl/386
nacl/amd64p32
nacl/arm
netbsd/386
netbsd/amd64
netbsd/arm
netbsd/arm64
openbsd/386
openbsd/amd64
openbsd/arm
openbsd/arm64
plan9/386
plan9/amd64
plan9/arm
solaris/amd64
windows/386
windows/amd64
windows/arm