2020-07-20

作者: 天使的靠翅膀 | 来源:发表于2020-07-26 12:38 被阅读0次

    go 语言中的环境(GOPATH和GOROOT)

    对于go语言的新手,理解go语言中的两个环境变量GOROOT和GOPATH对于理解go语言的编译运行和包组织管理机制非常重要,所以今天讲解一下这两个go语言的环境变量。

    1.GOROOT

    作用:go官方SDK和工具的安装路径,在下载

    配置:在go env命令出现之前,需要在操作系统启动配置文件中~/.bash_profile或~/.bashrc下添加

    GOROOT=/home/ubuntu/sdk/ 

    export GOROOT

    source ~/.bah_profile ,如果是配置的~/.bashrc就source ~/.bashrc重新加载环境

    go env 工具出现之后,通过go程序的路径推断出来

    which go 查看go的路径如下图:

    go程序执行路径

    推断出GOROOT:home/ubuntu/sdk/go

    GOROOT下的目录结构:

    GOROOT路径结构

    其中主要理解pkg、src和bin三个目录的作用

    bin:可执行程序的存放路径,例如go和gofmt 官方工具

    pkg:go官方包编译后的静态库文件存放路径,go程序引用的官方包就是在这里查找并直接链接进程序中,而不是通过查找引用的官方包源码编译进程序,这也是为什么go的程序编译快的一个原因,省略了对官方包的编译过程

    src:go官方包的源码路径

    2.GOPATH

    作用:go的自己包和第三包的管理路径

    配置:同GOPATH一样,在go env出现之前要手动在操作系统配置文件中~/.bash_profile或~/.bashrc按如下配置

    GOROOT=/home/ubuntu/go 

    export GOROOT

    source ~/.bah_profile ,如果是配置的~/.bashrc就source ~/.bashrc重新加载环境

    go env 工具出现之后默认是~/go

    GOPATH下的目录结构如下:

    GOPATH的目录结构

    bin:执行go install 生成的可执行程序存放的位置

    src:在没使用go mod管理包时,使用go get 获取的第三方包源代码存放路径

    pkg:目录结构如下:

    pkg目录结构

    linux_amd64:go install 编译后的静态库文件存放位置,非官方包被程序引用时也会先来这里查找是否有编译后的文件,有就链接,能加快程序编译的速度

    mod:在使用go mod管理包机制时,go get 下载的对应版本的包存放在这里。

    结语:当程序中引用包时,官方包go通过GOROOT查找引用包编译进程序中,非官方包在GOPATH中查找包编译。所以理解GOPATH和GOROOT的作用对于如下所示的包找不到的错误就能快的定位和解决。

    相关文章

      网友评论

        本文标题:2020-07-20

        本文链接:https://www.haomeiwen.com/subject/ixpukktx.html