目录
- 交叉编译
-
- 参数说明
-
- CGO_ENABLED
- [GOOS : 目标操作系统【darwin、linux、windows】](#GOOS : 目标操作系统【darwin、linux、windows】)
- [GOARCH :目标架构【386、amd64、arm】](#GOARCH :目标架构【386、amd64、arm】)
- [Mac 下编译,Linux / Windows 下执行](#Mac 下编译,Linux / Windows 下执行)
- [Linux 下编译,Mac / Windows 下执行](#Linux 下编译,Mac / Windows 下执行)
- [Windows 下编译,Mac / Linux 下执行](#Windows 下编译,Mac / Linux 下执行)
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 下执行
bash
# 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 下执行
bash
# 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
bash
# Mac 下执行
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go
bash
# Linux 下执行
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go