Golang中的交叉编译
Golang 中的交叉编译
在 Golang 中,交叉编译指的是在同一台机器上生成针对不同操作系统或硬件架构的二进制文件。这在开发跨平台应用或构建特定平台的发布版本时非常有用。
交叉编译 Golang 程序的基本步骤如下:
指定目标操作系统和工具链并设置对应的环境变量
在编译时,需要指定目标操作系统和工具链。可以通过设置 GOOS 和 GOARCH 环境变量来实现。例如,如果想要编译一个针对 Linux 的 ARM 程序,可以设置如下环境变量:
GOOS=linux
GOARCH=arm
进入源代码目录执行编译命令
在开始编译之前,需要切换到包含源代码的目录,使用 go build 命令来编译程序。
在 Linux 上交叉编译
编译出可以在 Windows 中运行的二进制文件
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
编译出可以在 mac 中运行的二进制文件
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
在 mac 上交叉编译
编译出可以在 Windows 中运行的二进制文件
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
编译出可以在 Linux 中运行的二进制文件
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
在 Windows 上交叉编译
Windows 和 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_ENABLED=0 意思是禁用 CGO,因为交叉编译不能启用 CGO。
GOOS:表示目标平台,例如 mac 系统对应 darwin,linux 系统对应 linux,windows 系统对应 windows等。
GOARCH:目标平台的架构,例如 amd64,arm等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!