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
相关推荐
疯狂吧小飞牛1 分钟前
修改crashkernel为0
linux·服务器
maosheng11469 小时前
RHCSA的第一次作业
linux·运维·服务器
wifi chicken9 小时前
Linux 端口扫描及拓展
linux·端口扫描·网络攻击
旺仔.2919 小时前
Linux 信号详解
linux·运维·网络
放飞梦想C9 小时前
CPU Cache
linux·cache
Hoshino.4110 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
播播资源12 小时前
CentOS系统 + 宝塔面板 部署 OpenClaw源码开发版完整教程
linux·运维·centos
源远流长jerry12 小时前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip
添尹12 小时前
Go语言基础之变量和常量
golang
lay_liu13 小时前
Linux安装redis
linux·运维·redis