目录

ubuntu18.04安装Go语言

ubuntu18.04安装Go语言

Go是由Google创建的现代开源编程语言。 Go中编写了许多流行的应用程序,包括Kubernetes,Docker和Grafana。

1. 下载go并解压缩
  • 到Go官网下载Go安包,下载地址 。我直接下载的是最新的 go-1.12.1 。选择的是linux 64位版本:

https://i-blog.csdnimg.cn/blog_migrate/a1ee80bd3d315c5d2b90fbec427c2bd9.png

  • 国内比较快的下载链接,通过golang中文社区进行下载:
  • 解压缩 go1.12.1.linux-amd64.tar.gz
$ tar -zxvf go1.12.1.linux-amd64.tar.gz
  • 将解压后的文件夹,放到自己平常的安装包位置,并设置 0777 权限
$ sudo cp -rf go /usr/local
$ cd /usr/local
$ sudo chmod -R 0777 go
2. 配置go环境变量

go语言的环境变量配置,需要两个值:

  1. GOROOT 是系统上安装Go软件包的位置
  2. GOPATH 是工作目录的位置
  • 创建工作目录,我选择创建在 /home/hadoop 目录下.
$ mkdir GOPATH
$ sudo chmod -R 0777 GOPATH
  • 使用 sudo gedit ~/.bashrc 命令修改环境变量,在弹出的记事本中添加以下内容。同时也在 GOPATH 目录下创建src和bin目录。
export GOROOT=/usr/local/go #GOROOT是系统上安装Go软件包的位置。
export GOPATH=/home/hadoop/GOPATH #GOPATH是工作目录的位置。
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
  • 使用一下命令使环境变量生效,并可以查看环境变量
$ source ~/.bashrc
$ export

https://i-blog.csdnimg.cn/blog_migrate/d9e99a7072c9dde6692ff220c138615f.png

  • 使用同样的方法,修改 /etc/profile 文件,为其添加go环境变量(这是我的个人习惯,喜欢两个地方都作更改)。
3. 验证go安装是否成功
  • 输入以下命令查看go版本,顺便验证go是否安装成功。
$ go version

https://i-blog.csdnimg.cn/blog_migrate/b67a64c6bf1e37f5867baa4114a4aa3b.png

  • 编写hello程序,验证go安装是否成功。

    ① 在 GOPATH 目录下创建 hello 目录,用于存放go的第一个程序。

    ② 在 hello 目录下,创建 hello.go 文件,内容如下:

package hello

import "fmt"

func main() {
    fmt.Printf("Hello, World\n")
}

③ 切换到 hello.go 的目录,并运行 hello.go 文件。

$ cd ~/GOPATH/hello  // 切换到`hello.go`的目录
$ go run hello.go    // 运行`hello.go`文件

https://i-blog.csdnimg.cn/blog_migrate/94e50d8fd8ffe2967878bcea6716b929.png

④ 也可以使用 go build 编译go文件的方式执行程序。

$ cd ~/GOPATH/hello # 切换到`hello.go`的目录
$ go build    # 编译`hello.go`文件,得到一个名为hello的可执行文件
$ ./hello     # 执行名为hello的可执行文件

https://i-blog.csdnimg.cn/blog_migrate/bde85423ebbe62ebf9f7b5819e7ca382.png

至此,go语言已经成功安装!

4. 使用过程中的发现
  • 最开始,自己一直不明白为什么需要创建 GOPATH 目录,后来在编译别人的go项目时,别人的比编译命令如下:
echo "building orderer..."     # 终端显示的内容
go install madledger/orderer   # 安装某个模块

这时会报错,说不能在 ${GOPATH}/src${GOROOT}/src 下面找到对应的包。

building orderer...
can't load package: package madledger/orderer: cannot find package "madledger/orderer" in any of:
	/usr/local/go/src/madledger/orderer (from $GOROOT)
	/home/hadoop/GOPATH/src/madledger/orderer (from $GOPATH)
  • 自己恍然大悟,原来go命令会自动到 ${GOPATH}/src${GOROOT}/src 下面去寻找对应的包。所以自己将 madledger 拷贝到 ${GOPATH}/src 目录下,再运行编译名命令。执行结果如下:

    https://i-blog.csdnimg.cn/blog_migrate/57b91bb7a68bfd888c8cef1ed7309521.png

  • 而且如果是install命令,还会在 ${ GOPATH }/bin${ GOROOT }/bin 下面安装对应的go可执行文件。

    https://i-blog.csdnimg.cn/blog_migrate/7be28142458e8347cdbca62d25971293.png

  • 所以,如果想直接在任何目录编译go文件,可以将go文件放到src目录下,他会自动去寻找相应的包。

    https://i-blog.csdnimg.cn/blog_migrate/234d285a57d5ee8d44bc10105fe8f658.png

  • go build 命令会在当前目录生成对应的可执行文件。

    https://i-blog.csdnimg.cn/blog_migrate/c1f803008309f299a1b5f9e6b9000643.png

参考链接: