我的程序在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。下面是我让它工作的步骤:
- 删除%GOPATH% 中的pkg文件夹
- 重新加载终端(控制台)会话,确保
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。
- 我通过退出并重新打开我的编辑器来解决这个问题。