ubuntu18 安装golang以及对go三个关键环境变量的理解

  vps的ip被封,更换ip的同时我顺带把原来的centos换成了ubuntu18,更换之后想着在服务器上重新玩一下golang,在重新安装golang的过程中我对golang的三个关键目录有了更深的理解,

我用的操作系统是Ubuntu 18.04 LTS

  • golang安装

    1
    2
    apt-get update
    apt-get install golang

    在终端执行这两条命令就可以安装上golang了

  • go三个关键目录

      go的三个关键环境变量为GOPATH、GOBIN、GOROOT
      GOPATH用来指定工作空间的目录,通常会在家目录下创建一个文件夹并添加到gopath,
    在设置gopath之前,先看下go env
    执行命令:go env
    可以看到

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    root@ubuntu:~/go/src# go env
    GOARCH="amd64"
    GOBIN=""
    GOCACHE="/root/.cache/go-build"
    GOEXE=""
    GOHOSTARCH="amd64"
    GOHOSTOS="linux"
    GOOS="linux"
    GOPATH="/opt/go"
    GORACE=""
    GOROOT="/usr/lib/go-1.10"
    GOTMPDIR=""
    GOTOOLDIR="/usr/lib/go-1.10/pkg/tool/linux_amd64"
    GCCGO="gccgo"
    CC="gcc"
    CXX="g++"
    CGO_ENABLED="1"
    CGO_CFLAGS="-g -O2"
    CGO_CPPFLAGS=""
    CGO_CXXFLAGS="-g -O2"
    CGO_FFLAGS="-g -O2"
    CGO_LDFLAGS="-g -O2"
    PKG_CONFIG="pkg-config"
    GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build634430698=/tmp/go-build -gno-record-gcc-switches"

在使用apt-get install golang后,apt-get会自动将安装包目录作为GOROOT,且GOROOT只能设置为安装包路径,这里的GOROOT为/usr/lib/go-1.10

在没有设置环境变量之前GOPATH是默认指向/opt/go的,GOBIN为空

需要注意的是不同的系统,不同的安装方式,会导致上面三个目录有所不同,至少我在mac上和ubuntu里安装后这三个路径不一样,
这个时候其实我们也可以到gopath指定的路径/opt/go下进行开发,但是我更喜欢在家目录下开发,

这里记一下这三个目录的作用
GOPATH为工作空间的路径,比如我在home目录下创建一个go文件夹来作为开发空间,那么需要在家目录下创建go文件夹

1
2
3
4
5
6
7
8
//cd 到家目录
cd
// 创建go文件夹
mkdir go
cd go
mkdir src
mkdir pkg
mkdir bin

编辑~/.bashrc 文件:vi ~/.bashrc
往里面追加一下内容
1
export GOPATH=/root/go

GOBIN用来存放项目编译生成的可执行文件,在使用go install命令的时候会将生成的可执行二进制文本放到这个目录下,所以我们需要将之前在工作空间创建的bin路径放到GOBIN变量里
在~/.bashrc 文件中追加:

1
export GOBIN=/root/go/bin

这儿如果不设置GOBIN的话,go install的时候会报错:
1
go install: no install location for .go files listed on command line (GOBIN not set)

另外每次编辑~/.bashrc文件后需要soure一下

至此三个环境变量已经介绍完了,做个总结:GOPATH设置工作空间,GOROOT指向安装包目录,GOBIN指向用来存放编译生成的可执行文件的目录

小测试一下
切换到工作空间的src目录下,创建一个hello目录,并进入hello目录

1
2
3
cd ~/go/src
mkdir hello
cd hello

创建hello.go文件
vi hello.go
写入代码:
1
2
3
4
5
6
package main
import "fmt"

func main(){
fmt.Println("hello world")
}

编译文件:go build ~/go/src/hello/hello.go
如果环境变量配置正确,会在~/go/bin/目录下多出一个hello的可执行文件,.~/go/bin/hello 就会输出hello world

-------------本文结束感谢您的阅读-------------

本文标题:ubuntu18 安装golang以及对go三个关键环境变量的理解

文章作者:fengxi

发布时间:2019年01月29日 - 15:01

最后更新:2019年04月04日 - 21:04

原始链接:https://super-storm.github.io/2019/01/29/ubuntu18-安装golang以及对go三个关键环境变量的理解/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。