首页 > 编程知识 正文

朋友圈停用怎么设置,gopath和goroot

时间:2023-05-05 07:23:42 阅读:129134 作者:1098

为什么不再需要设置GOROOT呢? 我建议读两篇英语文章。 意译后,我把它们放在了一起。

第1篇是关于在Go 1.10之前,如何设置GOROOT的发表和2013年。 第二篇从Go 1.10开始,如何处理GOROOT,2018年,是Go源代码提交日志。 这个很短。

通过阅读,您会发现大多数情况下,我们不需要手动设置GOROOT。

第一篇

一篇短文,说明了编译和使用Go时不需要设置GOROOT的原因。

概要介绍

一般来说,从Go 1.0开始,您不需要设置GOROOT来编译和使用GO。 事实上,如果您的电脑上存在多个版本的Go区域设置,则设置GOROOT可能会遇到一些问题。

GOPATH还需要设置。

从Go 1.0开始,强烈推荐GOPATH。 随着Go 1.1的发布,GOPATH已经是强制性的。

为什么不再设置GOROOT了?

谈谈Go环境变量的历史吧!

Go资深前辈可能还记得,曾经的Go不仅需要GOROOT,还需要安装GOOS和GOARCH。 之所以设定GOROOT,是因为Make在编译构建时导入了GOROOT的内容,并将GOROOT设定为它们的基本路径。

随着go tool的引入,在Go 1.0之前,GOOS和GOARCH是可选的。 因为构建脚本现在可以自动检测系统类别和CPU体系结构。 Go 1.0发布后,引入了cmd/dist引导构建工具。 GOOS和GOARCH是真正意义上的选项,仅在交叉编译时使用。

不需要设置GOOS和GOARCH,那么GOROOT呢?

GOROOT被定义为指定GO安装的根目录。 以前的Makefile在部署其他Makefile时将其作为基本路径。 在Go 1.0之后,Go tool利用它进行go编译器(保存在$GOROOT/pkg/tool/$GOOS_$GOARCH中)、标准库) $ go root/pkg/$ GOOS _ $ 如果是Java开发人员,则可以将GOROOT理解为JAVA_HOME。

编译源代码时,GOROOT会自动检测(位于all.bash的上级目录中)并将其设置为Go工具链。

用以下命令显示:

$ echo $GOROOT

$ go env

/home/dfc/go

复制代码

从Golang.org下载的二进制软件包和系统安装的go环境也在工具链中设置了正确的GOROOT。

例如,在Ubutun 12.04中安装了Go 1.0。

$ dpkg -l golang-{go,src} | grep ^ii

$ go

/usr/幽默的可乐/go

$ go env GOROOT

/usr/lib/go

复制代码

可以看到,Go工具链安装在/usr/幽默可乐/go下,GOROOT内置为/usr/lib/go

为什么不应该设置GOROOT

不应该设置GOROOT,因为Go工具链包含正确的值。

设置GOROOT将复盖存储在go工具链中的缺省值,go可能会运行不同版本的编译器和标准库文件。

在这两种情况下,都必须设置GOROOT。 有与官方安装介绍相关的说明。

对于Linux、FreeBSD或OS X用户,我们下载了zip和tarball二进制软件包的安装。 这些二进制文件的默认环境位于/usr/local/Go中。 我建议在这个地方安装go。 如果选择不这样做,则必须将其设置在指定的目录下。

如果是Windows用户,则在使用zip二进制软件包进行安装时,默认的GOROOT位于C:Go目录中。 如果Go安装在其他位置,请在指定的目录中设置GOROOT。

其他详细信息

本文介绍了用源代码编译Go环境时,GOROOT是如何自动发现的。 但是,如果GOROOT和all.bash的位置不一致呢? 例如,如何在临时目录中编译Go环境并正确设置GOROOT? 答案是使用GOROOT_FINAL,用于覆盖自动发现的GOROOT,并将其设置为GO工具链。

例如,在Debian/Ubuntu中,生成器将GOROOT_FINAL的值设置为/usr/lib/go。 将GOROOT保留为未设置,使构建编译愉快地运行。 构建完成后,在/usr/幽默的可乐目录下安装Go工具链,并在/usr/lib/go下安装编译器、源代码和软件包。

注意事项

使用二进制软件包安装Go环境时,需要解决一些特殊情况。 这个文件已经说明了。

构建系统会自动检测,但如果all.bash的父目录不满足GOROOT的要求,则需要单独处理。

第二编

从Go 1.10开始,在use os.Executable上查找GOROOT。

以前,使用make.sh编译生成GOROOT,但如果将整个目录移动到新路径,Go工具链将无法正常工作。

怎么解决这个问题?

第一,可以重新编译源代码,但如果新位置位于其他用户的目录下,则可能无法重新编译源代码。

第二,您可以通过设置GOROOT环境变量来解决问题,但不建议单独设置GOROOT,因为在一个环境中go tool可能在另一个环境中使用compile。

在这次修改中,go tool以相对路径方式决定GOROOT,使用os.Execute函数。 此外,检查$GOROOT/pkg/tool目录是否存在,以避免出现以下两种情况:

$ ln -s $GOROOT/幽默可乐/go /usr/local/幽默可乐/go

复制代码

$ PATH=$HOME/幽默的可乐:$PATH

$ GOPATH=$HOME

$ ln -s $GOROOT/幽默可乐/go $HOME/幽默可乐/go

复制代码

另外,如果当前执行路径不在GOROOT下,则在软连接中找到真正命令的位置,并检查该路径是否为GOROOT。

疑问加站长微信联系(本论文作者以外) ) ) ) ) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。