linux系统:go build报错import cycle not allowed

go build

困扰我多时的 go 编译报错:循环导入,代码肯定是没问题的,网上查说重新安装go 我觉得也不是太好的办法

import cycle not allowed
package day01/hello
        imports fmt
        imports errors
        imports runtime
        imports internal/bytealg
        imports internal/cpu
        imports runtime  

环境:

ubuntu16.04

go1.11.4

编辑器:vs code

分析:

首先是GOROOT 和GOPATH问题,一定要明确自己go 的安装目录,即GOROOT 不要写错,如果不知道自己的安装目录,可以用下面的命令查看go 安装地址

$ whereis go
#输出
go: /usr/bin/go /usr/lib/go /usr/local/go /usr/share/go /usr/local/go/bin/go /usr/share/man/man1/go.1.gz
#我可能是在不同的地方安装了多个版本的 go

GOPATH 是我们go代码的工作路径,正常配置自己的项目文件夹路径就可以,我的是在/home/zzy/goProject

go 环境查看

$ go env
#输出
GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/zzy/goProject"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
#其中关键看GOPATH,GOROOT

我发现我的配置都没有错啊!我的go代码工作目录也是/home/zzy/goProjec 这个路径,说明GOPATH 也没有错,那到底是哪里错了!

最后我发现在执行whereis go 的时候,我有很多版本的go 而我在环境变量里只是配置了一个版本的GOROOT ,是go1.11.4

但是我在用查看go版本的时候,居然显示是go1.6

go version 

所以我估摸是我的go安装乱了,版本太多,导致在go build 的时候找不到正确的go 路径,然后我就开始一个一个删除

sudo rm -r   /usr/bin/go /usr/lib/go  /usr/share/go  /usr/share/man/man1/go.1.gz

最后只留下了我确认安装过的目录,也是我环境变量正确的目录

最后执行go build 没有报错!

附带修改go 环境变量方法

###### 在/etc/profile文件中添加变量【对所有用户生效(永久的)】

##### vim修改环境变量文件 :sudo vim /etc/profile

###### 在打开的文件末尾添加 export PATH=$PATH:/usr/local/go/bin即可

###### 最后一定要启用: source /etc/profile

 

分析,首先是GOROOT 和GOPATH问题,一定要明确自己go 的安装目录,即GOROOT 不要写错,如果不知道自己的安装目录,可以用

转载于:https://www.cnblogs.com/zzy-9318/p/10406193.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值