GOOS
是 Go 语言中的一个环境变量,用于指定目标操作系统,在进行跨平台编译(交叉编译)时发挥作用 。以下是它的一些常见选项:
主流操作系统
linux
:代表 Linux 操作系统。在 Linux 系统下开发 Go 程序,若要编译出能在其他 Linux 发行版上运行的可执行文件,可设置GOOS=linux
。比如在 x86 架构的 Linux 系统上,设置CGO_ENABLED=0 GOOS=linux GOARCH=arm64
,再执行go build
,就能得到适用于 ARM64 架构 Linux 系统的可执行程序。windows
:表示 Windows 操作系统。如果在非 Windows 系统(如 Linux 或 macOS )上开发 Go 程序,想得到 Windows 平台可执行的.exe
文件,可设置GOOS=windows
。例如CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
,可生成 64 位 Windows 系统上能运行的程序。darwin
:对应 macOS 操作系统。在非 macOS 环境下开发,若要编译出能在 macOS 上运行的程序,需设置GOOS=darwin
。像CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
,可编译出适配 64 位 macOS 系统的可执行文件。
其他操作系统
freebsd
:FreeBSD 是一种类 UNIX 操作系统。GOOS=freebsd
可用于指定编译针对 FreeBSD 系统的程序,搭配不同的GOARCH
(如amd64
、arm
等)可适配不同架构的 FreeBSD 设备。openbsd
:OpenBSD 同样是类 UNIX 操作系统。设置GOOS=openbsd
可将 Go 程序编译为适用于 OpenBSD 系统的版本,也需结合具体的GOARCH
选项确定目标架构。netbsd
:NetBSD 也是类 UNIX 操作系统。使用GOOS=netbsd
能编译出在 NetBSD 系统上运行的程序,需配合相应的GOARCH
值(如386
、amd64
等) 。dragonfly
:DragonFly BSD 是基于 FreeBSD 衍生的操作系统。当GOOS=dragonfly
时,可针对该系统进行 Go 程序的编译,一般常搭配GOARCH=amd64
。
移动及嵌入式系统
-
android
:用于指定编译适用于 Android 系统的 Go 程序。结合不同的GOARCH
选项,如arm
、arm64
、amd64
等,可适配不同 CPU 架构的安卓设备。 -
nacl
:NaCl(Native Client)是 Google 开发的一个用于在网页浏览器中以原生代码速度运行应用程序的技术。GOOS=nacl
可用于编译针对该环境的 Go 程序。
默认情况下,GOOS
的值为当前操作系统 。可以使用 go env GOOS
命令查看当前 GOOS
的设置。若要修改它的值以进行跨平台编译,可使用 go env -w GOOS=<目标操作系统>
命令 。比如想将目标操作系统设为 Linux,可执行 go env -w GOOS=linux
。 此外,在进行交叉编译时,还常需配合 GOARCH
(目标平台架构) 、CGO_ENABLED
(是否启用 CGO,CGO 用于在 Go 中调用 C 代码 )等环境变量一起设置。