直接回答:cgo 不能像纯 Go 那样直接交叉编译,最省事的办法是用官方交叉编译镜像,把源码目录挂进容器,在容器里设置 GOOS 和 CGO_ENABLED=1 再 build。
在使用cgo交叉编译的时候最方便的就是使用docker
- 拉取镜像
1 | docker pull crazymax/xgo |
- 使用xgo(这个是简化docker命令的包,通过这个包可以简化docker配置命令)
1 | go get github.com/crazy-max/xgo |
- 编译
1 | xgo --targets=windows/amd64,linux/amd64 $GOPATH/src/workspace/example/cgoDemo2/ |
指定目标环境,以及源文件位置,这里其实可以直接在项目目录下使用 xgo --targets=linux/amd64 .
简单快捷
这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。