gpt4 book ai didi

linux - cgo (for darwin) 的交叉编译失败

转载 作者:IT王子 更新时间:2023-10-29 01:10:28 25 4
gpt4 key购买 nike

我对 Linux 还是个新手。

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

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

我用来构建的命令行:

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

$1 是 darwin,$2 是 amd64($3 是我的应用程序的路径)。

由于错误似乎来 self 导入的库,我不确定如何修复它。我还读到交叉编译 cgo 并没有真正起作用,因为它依赖于原生 macos 的东西,所以它需要在 mac 上构建。这是真的吗?或者我可以做些什么来让它在我的环境中工作?

我也有点困惑,因为似乎大多数讨论这个主题的人都在谈论 go pre 1.5,如果我理解正确的话,它在交叉编译方面完全不同。

谢谢

最佳答案

感谢 JimB 的评论,我现在能够在 linux 上为 darwin 成功编译我的代码。

我需要的是一个 osx 工具链,例如 github.com/tpoechtrager/osxcross .

然后我通过执行 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 编译我的代码.

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

关于linux - cgo (for darwin) 的交叉编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34084597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com