golang 在 Mac、Linux、Window 下交叉编译

目录

  • 交叉编译
    • 参数说明
      • 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
相关推荐
1alisa3 小时前
Sublime Text for Mac v4【注册汉化版】代码编辑器
macos·编辑器·sublime text
TDD_06283 小时前
【运维】Centos硬盘满导致开机时处于加载状态无法开机解决办法
linux·运维·经验分享·centos
x66ccff3 小时前
vLLM 启动 GGUF 模型踩坑记:从报错到 100% GPU 占用的原因解析
linux
William.csj4 小时前
Linux——开发板显示器显示不出来,vscode远程登录不进去,内存满了的解决办法
linux·vscode
KeithTsui5 小时前
GCC RISCV 后端 -- 控制流(Control Flow)的一些理解
linux·c语言·开发语言·c++·算法
森叶5 小时前
linux如何与windows进行共享文件夹开发,不用来回用git进行拉来拉去,这个对于swoole开发者来说特别重要
linux·git·swoole
returnShitBoy5 小时前
Go语言中的defer关键字有什么作用?
开发语言·后端·golang
liulilittle5 小时前
Linux 高级路由策略控制配置:两个不同路由子网间通信
linux·网络·智能路由器
学习至死qaq5 小时前
windows字体在linux访问异常
linux·运维·服务器
在野靡生.6 小时前
Ansible(4)—— Playbook
linux·运维·ansible