go 语言的跨平台编译

go提供了编译链工具,可以在一个开发平台上,编译出其它平台的可执行文件。默认情况下,是根据当前的机器生成的可执行文件,可以使用go env查看编译环境。

在跨平台时,需要修改三个环境变量

GOOS: 目标平台的操作系统(darwin freebsd linux windows)

GOARCH 目标平台的架构是32位或64位(386 amd64 arm)

交叉编译不支持CGO所以要禁用它

以下三种方式

window环境下

编译mac

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go

编译为linux 64

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go

mac 环境下

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Linux环境下

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go