go build arm
Go 交叉编译
说明: 以下的交叉编译主机是在 x86_64 Ubuntu 16.04 平台下进行的.
Go 交叉编译涉及的编译参数:
GOARCH
, 目标平台的 CPU 架构. 常用的值amd64
,arm64
,i386
,armhf
GOOS
, 目标平台, 常用的值linux
,windows
,drawin
(macOS)GOARM
, 只有GOARCH
是arm64
才有效, 表示arm
的版本, 只能是 5, 6, 7 其中之一CGO_ENABLED
, 是否支持 CGO 交叉汇编, 值只能是0
,1
, 默认情况下是0
, 启用交叉汇编比较麻烦CC
, 当支持交叉汇编时(即CGO_ENABLED=1
), 编译目标文件使用的c
编译器.CXX
, 当支持交叉汇编时(即CGO_ENABLED=1
), 编译目标文件使用的c++
编译器.AR
, 当支持交叉汇编时(即CGO_ENABLED=1
), 编译目标文件使用的创建库文件命令.
不支持 CGO
不支持 CGO, 即 CGO_ENABLED=0, 在这种状况下, 进行交叉汇编是比较简单的. 只需要设置 GOARCH
, GOOS
, GOARM
(只 有是 arm 架构的平台) 即可.
交叉汇编 windows 系统 amd64 架构的目标文件:
GOOS=windows GOARCH=amd64 go build -o xxx *.go
交叉汇编 drawin 系统 amd64 架构的目标文件:
GOOS=drawin GOARCH=amd64 go build -o xxx *.go
交叉汇编 linux 系统 arm64 架构的目标文件:
GOOS=linux GOARCH=arm64 GOARM=7 go build -o xxx *.go
其他架构的汇编可以进行类比.
支持 CGO
支持 CGO, 即 CGO_ENABLED=1, 在这种状况下, 进行交叉汇编有点复杂. 除了设置必要的参数GOARCH
,GOOS
,GOARM
(只有 是arm架构的平台),CGO_ENABLED
之外, 还需要设置CC
,CXX
,AR
参数.
这里主要介绍一下, 交叉汇编 arm 架构下的目标文件.
首先, arm 架构目前主要分为四种, 分别是armhf
(arm hard float, 硬件浮点),arm64
(64位的arm默认就是hf的).eabi
(embedded applicaion binary interface, 嵌入式二进制接口)和armel
(arm eabi little endian, 软件浮点).
### 当时明月在,曾照彩云归 ###
标签:
go
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!