为了账号安全,请及时绑定邮箱和手机立即绑定

go 1.5 在 OS X 上使用 cgo 交叉编译到 linux 和 windows

go 1.5 在 OS X 上使用 cgo 交叉编译到 linux 和 windows

Go
梦里花落0921 2021-11-01 17:11:50
git2go将 go 1.4.2 升级到 1.5 后,我在将OS X 上的库编译到 linux amd64 时遇到了问题。我认为这是关于交叉编译任何使用 go 1.5 的 C 代码的 go 应用程序。使用CGO_ENABLED=1,我得到:$ CGO_ENABLED=1 GOOS=linux GOARCH=amd64 ./script/with-static.sh go install ./...# runtime/cgold: unknown option: --build-id=noneclang: error: linker command failed with exit code 1 (use -v to see invocation)使用-compiler=gccgo,我得到:$ GOOS=linux GOARCH=amd64 ./script/with-static.sh go install -compiler gccgo ./...go build github.com/libgit2/git2go: : fork/exec : no such file or directory如果不提供其中任何一个,我会得到:$ GOOS=linux GOARCH=amd64 ./script/with-static.sh go install ./...can't load package: package github.com/libgit2/git2go: C source files not allowed when not using cgo or SWIG: wrapper.c我使用自制软件安装了 go,并且$GOPATH指向默认~/go位置,没什么特别的。
查看完整描述

2 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

交叉编译时默认不启用 cgo。如果您启用 cgo,并且 CGO_ENABLED=1,您将需要为目标机器使用交叉编译 c 编译器。这很重要。

如果您需要 cgo,我建议本地编译。


查看完整回答
反对 回复 2021-11-01
?
互换的青春

TA贡献1797条经验 获得超6个赞

如果您需要 cgo 交叉编译,我会向您指出xgo,我发现它非常有帮助。它在我的用例的 100% 中都不起作用,但是对我的代码进行一些细微的更改(与维护用于交叉编译的本机 VM 相比),这就足够了。


查看完整回答
反对 回复 2021-11-01
  • 2 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信