在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.goLinux 下编译 Mac 和 Windows 64位可执行程序#
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.goWindows 下编译 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 时应额外检查交叉工具链,不能仅以生成文件判定跨平台兼容。
