↓ 跳过正文

Go语言编译指定操作系统的可执行文件

正能量 1 分钟阅读 更新于 2026-10-18

说明 Go 交叉编译时,目标操作系统、架构和本机运行环境的区别。

Go语言编译指定操作系统的可执行文件:原站配图。

在Mac 下编译 Linux 和 Windows 64位可执行程序
#

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

Linux 下编译 Mac 和 Windows 64位可执行程序
#

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Windows 下编译 Mac 和 Linux 64位可执行程序
#

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go

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

在Mac和Linux下也可以编写shell文件:

#!/bin/bash
export GOOS=windows
export GOARCH=amd64
export CC=x86_64-w64-mingw32-gcc
export CXX=x86_64-w64-mingw32-g++
export CGO_ENABLED=1
go build .

GOOS:目标平台的操作系统(darwin、freebsd、linux、windows) GOARCH:目标平台的体系架构(386、amd64、arm)

补充阅读
#

说明 Go 交叉编译时,目标操作系统、架构和本机运行环境的区别。

如何理解与使用
#

交叉编译需要同时考虑 GOOS 与 GOARCH,产物能否运行还受使用的依赖与系统能力影响。

验证与边界
#

先确认目标平台,再到对应环境验证启动与关键功能。依赖 CGO 时应额外检查交叉工具链,不能仅以生成文件判定跨平台兼容。