Golang支持交叉编译,即在一个平台上生成另一个平台的可执行程序。
以在windows上编译linux的可执行程序为例,网上的教程普遍如下:
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
go build -o main main.go //指定可执行文件的命名
不知为何,在笔者的win11上,set命令没有生效。于是补了一条命令:
go env -w GOOS=linux
命令解读
- GOOS:目标平台的操作系统 (darwin、freedsd、linux、windows)
- GOARCH: 目标平台的体系架构(386、amd64、arm)
- CGO: 交叉编译不支持CGO,所以要禁用它
运行
将生成的可执行文件传至目标平台,即可以直接运行,记得赋予该文件可执行权限。
./main