一、前言
Golang 支持交叉编译, 在一个平台上生成然后再另外一个平台去执行。 而且编译的工具【build】这个工具是Golang 内置的,不需要你去下载第三方的包啥的,贼方便~
二、 交叉编译
Mac 下编译
# 编译为 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 执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
# 编译为 Windows 执行程序
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
Windows 下编译
需要写一个批处理程序,在里面去设置,因为windows 下的 terminal 不支持 shell , 这跟 Mac 和 Linux下有点不同
# 编译为 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
三、参数说明
- CGO_ENABLED : CGO 表示golang中的工具,CGO_ENABLED 表示 CGO 禁用,交叉编译中不能使用CGO
- GOOS : 目标平台
- mac 对应 darwin
- linux 对应 linux
- windows 对应 windows
- GOARCH :目标平台的体系架构【386,amd64,arm】, 目前市面上的个人电脑一般都是amd64架构的
- 386 也称 x86 对应 32位操作系统
- amd64 也称 x64 对应 64位操作系统
- arm 这种架构一般用于嵌入式开发。 比如 Android , IOS , Win mobile , TIZEN 等
转载自:https://www.cnblogs.com/yinguohai/p/11543524.html (略有调整)
Comment