环境:Go 1.16+,Go 的交叉编译至少要 1.5+ 以上。
测试系统: MacOS,Centos7, Win10
1. 编译方法
# 在命令行进入项目根目录,并执行以下命令
CGO_ENABLED=0 GOOS=xxx GOARCH=xxx go build
参数说明:
CGO_ENABLED:是否使用C语言版本的GO编译器。0表示不使用,1表示使用,默认CGO_ENABLED的值为1,允许你在Go代码中调用C代码。自从golang 1.5以后go就使用go语言编译器进行编译。如果系统中使用了C的库,那么就设置为1;没有使用的话就设置为0即可。GOOS:目标操作系统,比如 Mac、Linux、Windows 等GOARCH:目标操作系统的架构,32 位、64 位、ARM 等
常用的 GOOS 与 GOARCH :
| $GOOS | $GOARCH | 描述 |
|---|---|---|
| darwin | amd64 | Mac 64 位系统 |
| darwin | arm64 | Mac 64 位系统(ARM) |
| linux | 386 | Linux 32 位系统 |
| linux | amd64 | Linux 64 位系统 |
| linux | arm | Linux 32 位系统(ARM) |
| linux | arm64 | Linux 64 位系统(ARM) |
| windows | 386 | Windows 32 位系统 |
| windows | amd64 | Windows 64 位系统 |
| windows | arm | Windows 32 位系统(ARM) |
| windows | arm64 | Windows 64 位系统(ARM) |
【注】更多系统环境请移步官网:https://golang.org/doc/install/source#environment
2. Mac 编译
【注】默认在当前项目的根目录生成项目的二进制文件。
2.1 编译成 Linux 可执行文件
# Linux 通用 64 位系统(Centos、Ubuntu等)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
2.2 编译成 Windows 可执行文件
# Windows 64 位系统
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
3. Linux 编译
【注】默认在当前项目的根目录生成项目的二进制文件。
3.1 编译成 Mac 可执行文件
# Mac 64 位系统
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
3.2 编译成 Windows 可执行文件
# Windows 64 位系统
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
4. Windows 编译
【注】默认在当前项目的根目录生成项目的二进制文件。
4.1 编译成 Mac 可执行文件
# Mac 64 位系统
SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 go build
4.2 编译成 Linux 可执行文件
# Linux 通用 64 位系统(Centos、Ubuntu等)
SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build
参考文章: