xgo交叉编译cgo代码到arm7平台

作者 lostvip 2024年06月12日 16:42 阅读 324

golang交叉编译最优解!之前一直使用 linaro工具进行交叉编译,存在一个问题,更换操作系统后,原来的脚本无法正常编译。 使用xgo可避免此问题,但是xgo依赖的docker镜像比较大接近7G

使用 linaro工具进行交叉编译,存在一个问题,更换操作系统后,原来的脚本无法正常编译。使用xgo可避免此问题,虽然xgo依赖的docker镜像比较大接近7G,但是可以避免很多不必要的麻烦 !
xgo项目地址(Github)

一、下载docker镜像

docker pull techknowlogick/xgo:latest

二、下载包装器

官方:为了防止每次都记住一个可能很复杂的 Docker 命令,在其上编写了一个轻量级的 Go 包装器。
 

go get src.techknowlogick.com/xgo
# go >= 1.17执行
go install src.techknowlogick.com/xgo@latest

需要在/etc/profile中配置好GOPATH,否则找不到xgo的bin文件

export GOPATH=/opt/dev/gopath
       export PATH=${GOPATH}/bin:$PATH

三、编译 (不需要针对CGO做任何配置)

进入到项目目录执行:

# 编译所有平台版本,默认配置
# xgo .
# 只编译arm-7
xgo -ldflags "-w -s" -out app-0.1 --targets=linux/arm-7 .

  • . 代表当前目录,
  • -ldflags "-w -s" 优化文件大小
  • xgo 更多参数: xgo -h

发表评论