很多刚接触 Go 语言开发的朋友,在 Ubuntu 系统上配置开发环境时,常常被几个路径搞得一头雾水。编译完成后,生成的可执行文件究竟存放在哪里?安装好 Go 之后,它的根目录又该怎么找?这些看似基础的问题,一旦理清,日常写代码就会顺畅许多。今天我们就专门聊聊 Ubuntu 下 Go 语言相关的几个核心路径,看完之后保证你对它们了如指掌。
GOROOT:Go 语言自身的安装根目录
GOROOT 本质上就是 Go 的安装目录。这个具体路径取决于你当初采用哪种方式把 Go 部署到系统中的。
如果你使用的是 sudo apt install golang-go 命令来安装,那么 GOROOT 通常会被放置在 /usr/lib/go。如果你更喜欢手动处理,下载 .tar.gz 压缩包并解压到 /usr/local 目录下(例如执行 sudo tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz),那么 GOROOT 的路径就是 /usr/local/go。
其实你完全不必死记硬背具体位置,在终端里输入一句 go env GOROOT,系统就会直接给出答案。
编译生成的可执行文件:到底存放在哪里?
写好代码并完成编译后,那个可以直接运行的可执行文件究竟去了哪里?这主要取决于你使用的是 go build 还是 go install 命令。
如果你在项目目录下直接执行 go build,那么生成的可执行文件会老老实实地留在当前目录下,文件名通常与项目目录名一致。举个例子,你在 $GOPATH/src/your_project 里执行 go build,那么该目录下就会多出一个名为 your_project 的可执行文件。
那使用 go install 呢?这条命令会规规矩矩地把编译好的可执行文件放到 $GOPATH/bin 目录里。比如你执行 go install github.com/username/project,最终的可执行文件就会出现在 $GOPATH/bin/project。
两个关键环境变量:GOPATH 与 GOBIN
这里需要单独聊聊两个关键角色——GOPATH 和 GOBIN,它们直接决定了你的项目结构以及最终产物的存放位置。
- GOPATH:这是你的工作目录,Go 项目的源代码、编译后的包以及可执行文件都集中在这个“大本营”里。它下面包含三个默认的子文件夹:
src(存放源码)、pkg(存放编译后的包)、bin(存放可执行文件)。GOPATH 的默认路径是$HOME/go,想知道你当前系统上的具体路径,在终端里输入go env GOPATH即可。 - GOBIN:这是一个可选的环境变量,它专门用来指定
go install生成的可执行文件应当放在哪里。如果你没有设置这个变量,系统默认就会使用$GOPATH/bin作为存放位置。当然,你也可以通过export GOBIN=/custom/path/bin这样的命令,手动指定一个你喜欢的自定义路径。
如何快速核查这些路径?
核查方法其实并不复杂,几个简单的命令就能搞定:
- 查看 GOROOT:终端输入
go env GOROOT - 查看 GOPATH:终端输入
go env GOPATH - 查看 GOBIN:终端输入
go env GOBIN(如果没有设置过,这里可能会没有输出)
理解这些路径,本质上就是搞清楚了 Go 语言在 Ubuntu 上“如何安装”和“如何使用”的问题。一旦理清了它们之间的逻辑关系,无论是日常开发还是问题排查,都会顺手很多。
