Ubuntu14.04下安装Go环境

tech2022-08-03  138

Ubuntu14.04下安装Go环境

环境

操作系统:Ubuntu 14.04 64位版本Go版本:Go 1.15

安装步骤【参考官网】

下载Go安装包:Go 1.15(下载链接)将下载到的安装包解压至/usr/local路径下,在安装包所在目录下执行如下命令(需要root权限):tar -C /usr/local -xzf go1.15.1.linux-amd64.tar.gz,执行成功后,我们将会在/usr/local下看到解压得到的go目录: 配置PATH环境变量:打开$HOME/.profile文件,并在末尾添加export PATH=$PATH:/usr/local/go/bin,随后执行source $HOME/.profile使配置生效。执行go version验证是否安装成功,当准确获得版本信息时说明安装成功,如下:

入门demo(Hello world)

我们在用户目录($HOME,其实哪里都可以)下创建hello文件夹,其下创建文件hello.go,写入以下代码:

package hello import "fmt" func main() { fmt.Println("Hello, World!") }

随后执行go run hello.go得到:

至此,我们已经成功使用上了Go环境,并且编写代码。

另外,上面的go run hello.go其实等价于go bulid && ./hello,不同的是后者会生成一个可执行文件(红框所示):

配置工作区(workspace)

配置工作区的目的是为了更好的管理我们的项目。写过makefile的话我们知道,当我们编译出可执行文件时,一般都会将其放置在bin目录下,而不是像上面go build一样直接和源代码混合在一起。所以我们可以配置Go工作区,我们的每个项目生成的可执行文件,都可以放置到工作区的bin目录下,所以这里我们就需要配置一系列Go的环境变量:

在/home下创建go_workspace文件夹,打开$HOME/.profile文件在文件底部加入:export GOROOT=/usr/local/go # Go安装目录 export GOPATH=/home/go_workspace # Go工作区目录 export GOBIN=$GOPATH/bin export PATH=$PATH:$GOPATH/bin 执行source $HOME/.profile使配置生效

使用工作区

首先在工作区$GOPATH下,约定有如下三个子目录:

src 存放源代码文件 pkg 存放编译后的文件 bin 存放编译后的可执行文件

随后我们创建如下文件夹以及文件:

两个Go文件的代码为:

// src/main/main.go package main import "tools" func main() { tools.Say("Hello World") } // src/tools/hello.go package tools import "fmt" func Say(s string) { // 注意这里的函数名必须首字母大写,否则编译main编译会失败 fmt.Println(s) }

创建好之后,我们依次执行:

由于已经配置好GOPATH等环境变量,我们在哪个目录下执行均可,这里为了方便显示目录结构就在$GOPATH下执行:go install tools,这里是为了展示go install的编译效果,我们可以在$GOPATH/pkg下看到刚刚编译生成的tools.a

随后我们再执行go install main:

可以看到,我们通过两步go install将我们的自定义包import到主应用中使用:

这里强调一下,其实我们的第一步执行go install tools并不是必须的(其实想想也应该知道如果main引入很多自定义包的话手动编译就太累了),我们其实可以直接执行第二步go install main。我们依旧能够得到正确的可执行文件。只是此时不会有引用包即tools的编译文件tools.a生成。

区别在哪?

在我们演示的两个demo当中,一次使用了go build,一次使用了go install,那么区别在哪里呢?

go build的作用是:在当前目录下编译生成可执行文件。但是该指令会调用所有引用包的源码,重新编译,即便是tools内的源码毫无更改,也会重新编译一遍,而不是使用已经编译好的pkg下编译后文件,如果在$GOPATH和SGOROOT下都没有找到引入包的源码,则会报错,加入第二个demo中我将src/tools源码删除:

go install的作用就是编译源代码,如果是可执行文件(即包为main且包含main方法,比如执行go install main),则会直接生成到$GOBIN(在这里也就是$GOPATH/bin)下;如果是可执行文件所引用的自定义包(比如执行go install tools),就会将编译后文件放置到$GOPATH/pkg/$GOOS_$GOARCH下。

如果只是平时测试,只需要最简单的go run即可运行代码。

至此就已经完成了最基本的Go环境配置了。至于go build、go run、go install的详细区别,还需后面继续学习来了解,上面的内容是初次学习,如果有错误就有劳大家指出!

最新回复(0)