Press "Enter" to skip to content

Golang 在 Mac , Linux , Windows 下交叉编译详解

一、前言

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 (略有调整)

One Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha Code