共计 1859 个字符,预计需要花费 5 分钟才能阅读完成。
因为之前我的项目依赖到了 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 的装置了
正文完