2.3.4 跨平台交叉编译

Go语言支持跨平台交叉编译,可通过go build加选项的方式实现。

在macOS中的语法如下。

//编译Linux可执行二进制文件
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go`
//编译Windows可执行二进制文件
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

在Linux系统中的语法如下。

//编译macOS可执行二进制文件
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
//编译Windows可执行二进制文件
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

在Windows系统中的语法如下。

//编译macOS可执行二进制文件
SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 go build main.go
//编译Linux可执行二进制文件
SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build main.go

上述文件中涉及的交叉编译参数的含义如下。

CGO_ENABLED:是否使用cgo编译。0为不使用,1为使用。

GOOS:目标操作系统的标识。

GOARCH:目标可执行程序的操作系统架构。arm表示ARM架构,amd64表示64位架构。

注意:虽然可以在Go语言中直接编写C语言代码,但编译器必须支持C语言才行。换句话说,编译环境中也需要安装C编译器。