合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
# golang 在 Mac、Linux、Window 下交叉编译 Golang的交叉编译是指将Go程序从一个操作系统和架构编译为另一个操作系统和架构的过程。 也就是说我们可以在一个开发环境中编写代码,然后可以为多个不同的目标平台生成可执行文件。 交叉编译 参数说明 CGO_ENABLED CGO 表示golang中的工具,CGO_ENABLED 表示CGO禁用,交叉编译中不能使用CGO GOOS : 目标操作系统【darwin、linux、windows】 ``` mac:darwin linux:linux windows:windows ``` GOARCH :目标架构【386、amd64、arm】 ``` 386:也称 x86,对应 32 位操作系统 amd64:也称 x64,对应 64 位操作系统 arm:这种架构一般用于嵌入式开发。比如 Android、IOS、Win mobile、TIZEN 等 ``` Mac 下编译,Linux / Windows 下执行 # Linux 下执行 ``` CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go ``` # Windows 下执行 ``` CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go ``` Linux 下编译,Mac / Windows 下执行 # Mac 下执行 ``` CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go ``` # Windows 下执行 ``` CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go ``` Windows 下编译,Mac / Linux 下执行 需要写一个批处理程序,在里面去设置,因为 Windows 下的 terminal 不支持shell # Mac 下执行 ``` SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 go build main.go ``` # Linux 下执行 ``` SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build main.go ```