侧边栏壁纸
博主头像
汪洋

即使慢,驰而不息,纵会落后,纵会失败,但一定可以达到他所向的目标。 - 鲁迅

  • 累计撰写 175 篇文章
  • 累计创建 70 个标签
  • 累计收到 69 条评论

Golang - 跨平台编译

汪洋
2021-07-20 / 0 评论 / 2 点赞 / 216 阅读 / 844 字

一、何为交叉编译

简单地说,就是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行

二、交叉编译的准备

安装 TDM-GCC
下载地址: http://tdm-gcc.tdragon.net/download
安装完成后添加 TDM-GCC 中 bin 文件夹进环境变量

三、简述交叉编译

参数解析

这里用到了两个变量:

  • GOOS:目标操作系统
  • GOARCH:目标操作系统的架构
OSARCHOS Version
linux386/amd64/arm>= Linux 2.6
darwin386/amd64OS x
freebsd386/amd64>= FreeBSD 7
windows386/amd64>= Windows2000

四、Golang 多平台交叉编译实记

Mac 下编译 Linux 和 Windows 64位可执行程序

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Linux 下编译 Mac 和 Windows 64 位可执行程序

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Windows 下编译 Mac 和 Linux 64位可执行程序

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go

GOOS:目标平台的操作系统(darwin、freebsd、linux、windows) 
GOARCH:目标平台的体系架构(386、amd64、arm) 
交叉编译不支持 CGO 所以要禁用它
0

评论区