GoLang 交叉编译

在mac上编译64位linux的命令编译命令


cd 到项目目录

GOOS=linux GOARCH=amd64 go build .

上面这段代码直接在命令控制台里面运行就可以生成64位linux的可执行程序


参数解析

这里用到了两个变量:

  • GOOS:目标操作系统

  • GOARCH:目标操作系统的架构

psd1403

编译其他平台的时候根据上面表格参数执行编译就可以了。

扩展阅读

在网络上的诸多教程中可能会看到下面的编译命令

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

其中 CGO_ENABLED=0 的意思是使用 C 语言版本的 GO 编译器,参数配置为 0 的时候就关闭 C 语言版本的编译器了。自从 golang1.5 以后 go 就使用 go 语言编译器进行编译了。在 golang1.9 当中没有使用 CGO_ENABLED 参数发现依然可以正常编译。当然使用了也可以正常编译。

比如把 CGO_ENABLED 参数设置成 1,即在编译的过程当中使用 CGO 编译器,我发现依然是可以正常编译的。


实际上如果在 go 当中使用了 C 的库,比如 import "C" 默认使用 go build 的时候就会启动 CGO 编译器,当然我们可以使用 CGO_ENABLED=0 来控制 go build 是否使用 CGO 编译器。

1813
0
4年前