gpt4 book ai didi

go - 不能在共享库中隐式包含运行时/cgo

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

关注我的 earlier question ,现在我在尝试执行此 article 中的所有相同步骤时遇到此错误,因为我已经从 Go 1.6.1 升级到 Go 1.7.1(我无法返回到 Go 1.6.1,因为链接器在尝试编译一些共享库时崩溃)。

我做了什么:

  1. ~/.go/go 中安装了 go(稍后称为 GOROOT)。
  2. 编译libstd.so:

    GOROOT=~/.go/go GOPATH=~/tests go install -buildmode=shared -linkshared std
  3. 编译的 calc 库:

    GOROOT=~/.go/go GOPATH=~/tests go install -a -x -buildmode=shared -linkshared calc
  4. 尝试编译 app:

    GOROOT=~/.go/go GOPATH=~/tests go build -a -x -linkshared -o app cashier

    并收到此错误:

    ~/.go/go/pkg/tool/linux_amd64/link: cannot implicitly include runtime/cgo in a shared library

我尝试在环境中添加 CGO_ENABLED=0 来重复这些步骤,但没有任何东西可以通过这种方式构建。给我这个错误:

imports runtime/cgo: C source files not allowed when not using cgo or SWIG: gcc_fatalf.c gcc_linux_amd64.c gcc_mmap.c gcc_util.c

这是一个已知错误吗?是否要支持共享库?

最佳答案

我能够制作工作 DLL 的唯一方法是使用 buildmode=c-archive 并为我想要导出的所有 go 函数编写 C stub 。但我为此在 Windows 上工作,我不必在 Linux 上搞砸这个。这是一条调查的道路。

关于go - 不能在共享库中隐式包含运行时/cgo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39616236/

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