grpc, protobuf, protoc-gen-go配置完整教程
windows版:
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
这步是下载proto-gen-go
go get github.com/golang/protobuf/protoc-gen-go
go get github.com/golang/protobuf/proto
以上三个都输入一遍
之后会发现$GOPATH/bin下面有了protoc-gen-go, 然后还差protoc没下载.
https://github.com/protocolbuffers/protobuf/releases/tag/v3.9.0
去这里下载, 下载之后会是一个zip包, 里面只有 .zip/bin/protoc.exe有用, 把它复制到$GOPATH/bin
把$GOPATH/bin加入到PATH中
然后输入go get -u google.golang.org/grpc
你看着它下载完了, 但是 G O P A T H / s r c 中 什 么 文 件 也 没 有 , 不 要 慌 , 你 下 载 的 文 件 全 部 都 在 GOPATH/src中什么文件也没有, 不要慌, 你下载的文件全部都在 GOPATH/src中什么文件也没有,不要慌,你下载的文件全部都在GOPATH/pkg/mod中了.
怎么import(引用) $GOPATH/pkg/mod中的文件呢?
https://juejin.cn/post/6854573210508853255 看这个网站.
GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者 GOPATH模式来查找。
GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:当前目录在GOPATH/src之外且该目录包含go.mod文件当前文件在包含go.mod文件的目录下。
依赖包存储位置:
在你需要导入第三方包的地方,打开终端输入go mod init 你的命名
然后在该文件夹会出现go.mod文件
然后使用go get 你想要导入的包地址
这个时候go.mod文件就会多一条你刚才导入的包
然后import就成功了
Linux版:
golang 在linux下载如windows, 看那个网站很详细了.
下载之前要明白: linux是分为普通用户和root用户的.想要下载应用的全局环境, 得先进入root用户:
sudo su root
然后会提示你输入密码.
接下来就按照https://www.topgoer.com/ 下载好就可以了
linux的环境在文件/etc/profile中, 想要编辑得在root用户下编辑, vim /etc/profile
export GOPATH="/home/go"
export GOROOT="/home/local/go"
export PATH=“ P A T H : PATH: PATH:GOPATH/bin”
export PATH=“ P A T H : PATH: PATH:GOROOT/bin”
export GO111MODULE=“on”
export GOPROXY=“http://goproxy.io,direct”
然后source /etc/profile刷新环境变量(只要开机或者更改环境变量就需要刷新)
执行go env看一下go的环境
grpc和protobuf, protoc-gen-go的安装:
go get github.com/golang/protobuf/proto
go get github.com/golang/protobuf/protoc-gen-go
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
然后 go get -u google.golang.org/grpc
发现 G O P A T H / b i n 下 只 有 p r o t o c − g e n − g o 而 且 GOPATH/bin下只有protoc-gen-go而且 GOPATH/bin下只有protoc−gen−go而且GOPATH/src中没有任何文件. 不要慌
你下载的文件全部都在$GOPATH/pkg/mod中了
https://juejin.cn/post/6854573210508853255 看这个网站.
GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:当前目录在GOPATH/src之外且该目录包含go.mod文件当前文件在包含go.mod文件的目录下。
依赖包存储位置:
使用go get获取的包放在$GOPATH/src/目录下
使用go mod下载的依赖包放在$GOPATH/pkg/mod/目录下,所有项目共享
在你需要导入第三方包的地方,打开终端输入go mod init 你的命名
然后在该文件夹会出现go.mod文件
然后使用go get 你想要导入的包地址
这个时候go.mod文件就会多一条你刚才导入的包
然后import就成功了
然后就要安装 apt install -y protobuf-compiler (root下)
protoc --version (# Ensure compiler version is 3+)
https://grpc.io/docs/languages/go/quickstart/ (grpc官方网站)
这个官网上面 协议编译器的Go 插件:
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
着两条没啥用, 可以试一试反正
然后安装protoc
https://github.com/protocolbuffers/protobuf/releases/tag/v3.9.0
选择linux-64位的zip文件, 解压缩之后里面只有protoc文件有用, 把他放在$GOPATH/bin下
这样$GOPATH/bin下 有protoc, protoc-gen-go, protoc-gen-go-grpc, 还有vscode的一些插件
下载vscode和里面的go插件
其他问题: