Go 1.5+:错误-当不使用Go或SWIG时不允许导入runtime: C源文件



我的程序在go 1.4.2下可以完美地构建。在安装go 1.5后,我得到以下错误。

导入runtime: C源文件在不使用go或atomic_amd64x.c defs.c float.c heapdump.c lfstack.c malloc.cmchache .c McEntral.c mem_linux.c mfixallocc .c mheap.c msize.cOs_linux.c panicc parforc proc runtime.c signal.c signal_amd64x.cSignal_unix.c stack.c string.c sys_x86.c vdso_linux_amd64.c

错误与程序无关。即使是"Hello world"程序也会抛出同样的错误。

删除旧的1.4。X go安装,然后安装go 1.5.

我在安装go 1.5后遇到了同样的问题。问题是我在安装1.4.2的地方安装了go 1.5。Go 1.5不再使用C,如果存在旧的C安装文件,它会抛出如图所示的错误。

如果您希望旧的安装也存在,那么在其他位置安装1.5并将GOROOT设置为该位置。

希望有帮助。

编辑1:对于Linux用户:

如果你下载了go1.5*.tar.gz,那么你做了以下操作:

tar -C/usr/local/-xvf go1.5.linux-amd64.tar.gz

你的旧文件夹C文件不会被删除,所以正确的过程是:

首先:你应该删除旧的go文件夹。

sudo rm/usr/local/go/

第二步:然后运行

tar -C/usr/local/-xvf go1.5.x.linux-amd64.tar.gz

如果您使用brew升级go到go 1.5。下面是我让它工作的步骤:

  1. 删除%GOPATH%
  2. 中的pkg文件夹
  3. 重新加载终端(控制台)会话,确保Go env进入Go 1.5文件夹。

BTW:如果你想通过brew switch go 1.4.2从Go 1.5切换回Go 1.4.2,你需要做同样的事情。

我有同样的问题,因为我在我的机器上安装了两个版本的golang,一个来自官方网站,另一个来自自制。

并且GOROOT与go二进制不匹配,我只是用正确的GOROOT替换,然后完成。

export GOROOT=/usr/local/opt/go/libexec # install via brew

我在我的编辑器(sublime text 2)中遇到了这个问题。我在保存时调用go build,看起来我的编辑器指向go 1.4。X而不是新安装的1.5。

    我通过退出并重新打开我的编辑器来解决这个问题。

最新更新