打开Go语言之门:入门、实战与进阶
上QQ阅读APP看书,第一时间看更新

1.6 跨平台编译

Go语言开发工具包的另一强大功能就是可以跨平台编译。什么是跨平台编译呢?就是你在macOS上开发的程序,可以编译成Linux、Windows等平台上的可执行程序,这样你开发的程序就可以在这些平台上运行了。也就是说,你可以选择喜欢的操作系统做开发,并跨平台编译成所需要发布平台的可执行程序。

默认情况下,Go程序是根据我们当前的计算机来生成可执行文件的,比如计算机是Linux 64位的,就会生成Linux 64位下的可执行文件。

那么,怎么查看自己计算机的编译环境呢?以笔者自己的计算机为例,可以使用go env查看编译环境,以下是输出的重要部分。

Go语言通过两个环境变量来控制跨平台编译,它们分别是GOOS和GOARCH。

GOOS:代表要编译的目标操作系统,常见的参数有linux、windows、darwin等。

GOARCH:代表要编译的目标处理器架构,常见的参数有386、amd64、arm64等。

这样通过组合不同的GOOS和GOARCH,就可以编译出不同的可执行程序。比如我现在的计算机是macOS AMD64的,想编译出Linux AMD64的可执行程序,只需要执行go build命令即可,如以下代码所示:

前面两个赋值即更改环境变量,这样的好处是只针对本次运行有效,不会更改我们默认的配置。

关于GOOS和GOARCH更多的组合,参考官方文档(https://golang.org/doc/install/source#environment)的“$GOOS and$GOARCH”这一节即可。