直接回答:cgo 不能像纯 Go 那样直接交叉编译,最省事的办法是用官方交叉编译镜像,把源码目录挂进容器,在容器里设置 GOOS 和 CGO_ENABLED=1 再 build。

在使用cgo交叉编译的时候最方便的就是使用docker

  1. 拉取镜像
1
docker pull crazymax/xgo
  1. 使用xgo(这个是简化docker命令的包,通过这个包可以简化docker配置命令)
1
2
3
go get github.com/crazy-max/xgo
# go 1.17以后的版本使用下面的命令
go install github.com/crazy-max/xgo@latest
  1. 编译
1
xgo --targets=windows/amd64,linux/amd64 $GOPATH/src/workspace/example/cgoDemo2/

指定目标环境,以及源文件位置,这里其实可以直接在项目目录下使用 xgo --targets=linux/amd64 .

简单快捷

这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。

站内搜索

没有找到内容!