由于之前项目依赖到了k8s,且与k8s的集成比较多,而k8s的源码是go写的,网上搜索了一大堆关于go的信息,
发现很多云原生的项目都是由go写的,所以又来折腾以下go语言,因为之前用brew install mac安装了go,也用了
pkg包安装了go,所以环境够的很乱,至此,特定来清理一下
安装方式
- brew install go
- 官网下载对应的安装包,直接安装
注意:
第一种方式安装,go可执行文件在/usr/local/bin下,其实这个目录下的go是一个软连接,
➜ bin ll /usr/local/bin |grep go
lrwxr-xr-x 1 ljh admin 26 9 28 10:46 go -> ../Cellar/go/1.15.2/bin/go
lrwxr-xr-x 1 ljh admin 29 9 28 10:46 godoc -> ../Cellar/go/1.15.2/bin/godoc
lrwxr-xr-x 1 ljh admin 29 9 28 10:46 gofmt -> ../Cellar/go/1.15.2/bin/gofmt
我们发现其实这个是链接到了brew install的go的安装目录下了
第二种方式安装,go的可执行文件在/usr/local/go/bin下,这个是go pkg包默认的安装目录
但是无论怎么安装,都得配置GOPATH/GOBIN/PATH,如下, 这三个变量稍后做解释
#go
export GOPATH=/Users/ljh/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
这个时候,运行go env
GO111MODULE=""
GOARCH="amd64"
GOBIN="/Users/ljh/go/bin"
GOCACHE="/Users/ljh/Library/Caches/go-build"
GOENV="/Users/ljh/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/ljh/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/ljh/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.15.2/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.15.2/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
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 -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/1l/mwvs7rf563x72kqcv7l6rb840000gn/T/go-build705548469=/tmp/go-build -gno-record-gcc-switches -fno-common"
发现还有一个GOROOT,下面我们来解释一下
名词 | 解释 |
---|---|
GOROOT | go语言安装目录 |
GOPATH | 工程项目workspace |
GOBIN | 可执行文件目录,如go install 会生成可执行文件直接放到bin目录下 |
而GOPATH也会包含三个目录
名词 | 解释 |
---|---|
src | 源文件 |
pkg | 编译好的库文件,主要是*.a文件,如go install 把编译的普通的包放到该pkg目录下 |
bin | 可执行文件目录,如go install 会生成可执行文件直接放到bin目录下 |
一般来说,得将go可执行文件目录(${GOBIN})加入PATH中,使GO命令与我们编写的GO应用可以全局调用,
这样我们就完成了golang的安装了