golang 版本升降之后报错——imports runtime: C source files not allowed when not using cgo or SWIG

问题

golang 升级或者降级版本之后,执行编译报错如下:

package github.com/onsi/ginkgo/ginkgo
imports runtime: C source files not allowed when not using cgo or SWIG: 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

原因

  因为在升降级的时候,选择了直接覆盖目录安装,而不是删除后安装,故而导致了这个问题。

解决

查看golang的安装目录:

[root@hserver2 tmp]# cat /etc/profile.d/golang.sh
export GOROOT=/home/go
export GOBIN=/home/gopath/bin
export GOPATH=/home/gopath
export PATH=$GOBIN:$GOROOT/bin:$PATH

安装目录为:GOROOT,所以升降级版本时,应该选择,彻底删除 /home/go 目录,最后执行覆盖文件即可。

[root@hserver2 tmp]#rm -rf /home/go
[root@hserver2 tmp]#tar zxvf go1.9.2.linux-amd64.tar.gz -C /home

重新编译就可以了。

原文地址:https://www.cnblogs.com/cxbhakim/p/8883184.html