我们的开发环境和真正要部署的环境经常会遇到要不一样的情况,这里环境主要是指CPU的架构和操作系统,例如在X86的平台上编译的可执行文件在ARM平台上是不能运行的,反之亦然。这时候就需要交叉编译,交叉编译是在一个平台上生成另一个平台上的可执行文件。Golang 支持交叉编译,而且提供了非常方便的交叉编译方式。

Go交叉编译,主要涉及到以下几个环境变量的设置: GOARCH、GOOS和CGO_ENABLED。

GOARCH:编译目标平台的硬件体系架构(amd64, 386, arm, ppc64等)。

GOOS:编译目标平台上的操作系统(darwin, freebsd, linux, windows)。

CGO_ENABLED:代表是否开启CGO,1表示开启,0表示禁用。由于CGO不能支持交叉编译,所以需要禁用。

查看环境参数

go env

编译win32程序

go env -w GOARCH=386

go env -w GOOS=windows

go build [-o 编译后文件名] 源程序/包 [-ldflags "-H windowsgui"](不带弹窗)

编译win64程序

go env -w GOARCH=amd64

go env -w GOOS=windows

go build [-o 编译后文件名] 源程序/包 [-ldflags "-H windowsgui"](不带弹窗)

编译arm架构linux程序

go env -w GOOS=linux

go env -w GOARCH=arm

编译64位linux程序

go env -w GOOS=linux

go env -w GOARCH=amd64

文章作者: Ezio
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ezio's Blog
code go
喜欢就支持一下吧