Golang - 不使用cgo时不允许C源文件

4
尝试在我的 src 目录下运行 go build 时,出现了以下错误:

imports runtime: C source files not allowed when not using cgo: 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 时,我在 Ubuntu 笔记本电脑上运行了 sudo apt-get install golang 命令(14.04 LTS,64位),安装了版本 1.2。那时可以正常运行、构建和安装应用程序。然后我运行了 autoremove 命令,将其卸载,然后从 golang 网站安装了 1.4 版本。
这是怎么回事,我该如何解决?通过谷歌搜索这个错误,发现与先前安装的 go 版本有关,但我认为 autoremove 命令会清理它和任何依赖项(因为在从源码安装之前,我确保无法找到任何 golang)。
有什么线索吗?

1
这可能是一个愚蠢的问题,但是C编译器还安装了吗? - James Henstridge
@JamesHenstridge 我觉得你可能有所发现。虽然我没有构建32位二进制文件,但64位版本已经安装了,但我可能需要32位版本。使用https://github.com/golang/go/wiki/InstallFromSource#Install_C_tools中的说明安装32位C编译器似乎已经解决了问题。在获取样例应用程序构建后会回答。 - Grayda
4个回答

4

我通过取消环境中的GOROOT来解决了这个问题。它指向另一个Go安装。


2

1

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


0
如果您安装了Go 1.4,然后又安装了Go 1.5。但是不要更改GOROOT环境变量。 将GOROOT更改为GO 1.5的路径即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接