1. 程式人生 > >linux系統:go build報錯import cycle not allowed

linux系統:go build報錯import cycle not allowed

重新安裝 ont osi 項目 div play 其中 ubuntu16 size

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 不要寫錯,如果不知道自己的安裝目錄,可以用

linux系統:go build報錯import cycle not allowed