交叉编译cgo(for darwin)失败。

问题描述 投票:4回答:1

我对围棋,甚至对Linux都是相当陌生的。

我在Linux环境下建立了一个应用程序,它使用了基于cgo的gtk库 (https:/github.commattngo-gtk。). 该应用程序在其本地环境(linux 64bit)中构建得很好,但当我尝试为darwin 64bit编译时,我得到了以下结果。

# net
could not determine kind of name for C.AI_MASK
# net
could not determine kind of name for C.AI_MASK

我用来编译的命令行是:"其中1美元是darwin,2美元是amd64(3美元是路径)"。

env GOOS=$1 GOARCH=$2 CGO_ENABLED=1 go build $3

其中1美元是darwin,2美元是amd64(3美元是我的应用程序的路径)。

由于这个错误似乎来自于我导入的lib,我不知道该如何解决它。我也读到过交叉编译cgo并不真的有效,因为它依赖于本地的macos东西,所以它需要在mac上构建。这是真的吗,还是有什么办法可以让它在我的环境中工作?

我也有点困惑,因为似乎大多数讨论这个问题的人都在讨论go 1.5之前的版本,如果我没理解错的话,这个版本的交叉编译是完全不同的。

谢谢你

linux go darwin cgo
1个回答
4
投票

由于JimB的评论,我现在能够成功地在linux上编译我的代码。

我所需要的是一个osx工具链,如 github.comtpoechtragerosxcross。.

然后,我通过以下方式编译我的代码 env OSXCROSS_NO_INCLUDE_PATH_WARNINGS=1 MACOSX_DEPLOYMENT_TARGET=10.6 CC=o64-clang CXX=o64-clang++ GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 go build -v mywork/myprogram.

我的程序有的编译成功,有的在链接时抛出错误,但我想这是另一个问题,所以我将这个问题标记为解决了,至于交叉编译。

© www.soinside.com 2019 - 2024. All rights reserved.