关于spark:go系列1go的安装

因为之前我的项目依赖到了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的装置了

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理