我将Go分发解压到d:devgo
中,将d:devgobin
添加到我的路径中,创建一个文件d:projectshellohello.go
,并将GOPATH设置为d:projectshello
。运行go build hello.go
告诉我:
go: cannot find GOROOT directory: c:go
现在,几个不同的地方强烈敦促我而不是设置GOROOT,设置GOPATH应该是所需要的一切。
我应该反对这个建议吗?还是我遗漏了什么?
来自Dave Cheney的《你不需要设置GOROOT,真正的文章:》
只有两种情况可能需要设置
$GOROOT
环境。golang.org网站上的安装页面中对这两个方面进行了描述。为了完整起见,我将在这里重述
- 您是Linux、FreeBSD或OSX用户,使用golang.org网站上的zip或tarball二进制下载。这些二进制文件的
$GOROOT
值为/usr/local/go
,建议您将它们解压缩到该位置。如果选择不执行此操作,则必须将$GOROOT
设置为您选择的位置- 您是Windows用户,使用golang.org网站上的zip二进制下载。这些二进制文件的
$GOROOT
值为C:Go
如果将Go放置在系统的其他位置,则必须将$GOROOT
设置为您选择的位置
(如果你想了解导致GOROOT
混乱的历史,这篇文章的其余部分是一本不错的读物,总结一下是由于过时的说明,主要来自Go1之前。)
因此,如果你使用预先构建的Go二进制文件,和,你想把它放在其他地方,而不是";想要";,那么您需要GOROOT
。否则(即,如果您从源代码构建Go,或者将二进制分发放在默认位置),您就不需要或不想设置GOROOT
(上面的文章给出了一些不需要的原因)。
如果你不确定,最简单的方法是";正确的";是首先而不是设置任何其他GOPATH
。然后运行go env
,看看它说了什么;如果这显示了GOROOT
和GOPATH
的合理条目,那么您就完成了;如果错误,只设置变量来覆盖它。
我在编译时遇到了这个错误,在获得编译器版本时,我通过删除系统变量GOROOT并重新分配它来解决问题;变成c:\Go=)
我将GOROOT设置为指向该目录的内容:
AUTHORS PATENTS api favicon.ico misc src
CONTRIBUTORS README bin include pkg test
LICENSE VERSION doc lib robots.txt
这是包含src、bin、doc、lib等的目录。
一旦安装了Go lang,GOROOT就是安装的根目录。
当我在Windows C:\目录中分解Go Lang二进制文件时,我的GOROOT应该是C:\Go。如果与Windows安装程序一起安装,它可能是C:\Program Files\go(或C:\Program Files(x86)\go,用于64位软件包)
GOROOT = C:go
可能是缓存问题。
对我来说,我重新打开了MinGW(我通过pacman在msys2中安装了go),它起到了作用。