【问题标题】:Golang - C source files not allowed when not using cgoGolang - 不使用 cgo 时不允许使用 C 源文件
【发布时间】:2015-01-05 02:57:30
【问题描述】:

尝试在我的 src 目录中运行 go build 时,我收到此错误:

导入运行时:不使用 cgo 时不允许使用 C 源文件:atomic_amd64x.c defs.c float.c heapdump.c lfstack.c malloc.c mcache.c mcentral.c mem_linux.c mfixalloc.c mgc0.c mheap .c msize.c os_linux.c panic.c parfor.c proc.c runtime.c signal.c signal_amd64x.c signal_unix.c stack.c string.c sys_x86.c vdso_linux_amd64.c

当我第一次开始学习 Go 时,我在安装了 1.2 版的 Ubuntu 笔记本电脑(14.04 LTS,64 位)上运行了 sudo apt-get install golang。运行良好,我能够构建、安装和运行应用程序。然后我运行 autoremove 以摆脱它,然后从 golang 网站安装 1,4。

这里发生了什么,我该如何解决?谷歌搜索错误表明它与以前安装的 go 版本有关,但我认为 autoremove 会清理它和任何依赖项(似乎是这样,因为我确保在安装之前在任何地方都找不到 golang来源。

有什么线索吗?

【问题讨论】:

  • 这可能是一个愚蠢的问题,但 C 编译器是否仍然安装?
  • @JamesHenstridge 我想你可能会在这里做一些事情。安装了 64 位版本,但我可能需要 32 位,即使我没有构建 32 位二进制文​​件。使用来自github.com/golang/go/wiki/InstallFromSource#Install_C_tools 的指令安装 32 位 C 编译器似乎已修复它。得到一个示例应用程序构建后会回答

标签: linux ubuntu go cgo


【解决方案1】:

我通过在环境中取消设置 GOROOT 来解决此问题。它指向另一个 Go 安装。

【讨论】:

    【解决方案2】:

    所以詹姆斯是在正确的轨道上。我安装了 gcc,但没有安装 32 位版本。遵循https://github.com/golang/go/wiki/InstallFromSource#Install_C_tools 关于如何安装 32 位版本的建议解决了该问题。

    【讨论】:

      【解决方案3】:

      升级到 1.5 后我遇到了类似的问题。删除 /usr/local/go 目录并从 tarball 重新安装解决了问题。

      【讨论】:

        【解决方案4】:

        如果您先安装 Go 1.4,然后再安装 Go 1.5。但不要更改 GOROOT 环境变量。 将 GOROOT 点更改为 GO 1.5 路径。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-11-13
          • 1970-01-01
          • 2018-11-06
          • 1970-01-01
          • 1970-01-01
          • 2021-11-27
          • 2013-09-22
          相关资源
          最近更新 更多