编程知识 cdmana.com

【go系列1】go的安装(mac)

由于之前项目依赖到了k8s,且与k8s的集成比较多,而k8s的源码是go写的,网上搜索了一大堆关于go的信息,
发现很多云原生的项目都是由go写的,所以又来折腾以下go语言,因为之前用brew install mac安装了go,也用了 pkg包安装了go,所以环境够的很乱,至此,特定来清理一下

安装方式

  1. brew install go
  2. 官网下载对应的安装包,直接安装

注意:
第一种方式安装,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的安装了

版权声明
本文为[monkeyboy_tech]所创,转载请带上原文链接,感谢
https://my.oschina.net/monkeyboy/blog/4713216

Scroll to Top