0. 概述
最近收到反馈,有同学在看我的 GRPC 系列 的时候发现第一篇就进行不下去了,因为他们按照我的介绍进行操作的时候发现无法编译 protobuf,“明明在我的环境上是好的”,经过邮件来回沟通之后发现原来是我漏了一个 protobuf 的安装指导,所以这里补上。
1. 安装 protobuf
可能你会奇怪,protobuf 不是一个数据结构描述格式吗?为什么需要安装?是的,如果你只是将它作为数据交换格式,那么很可能是不用安装的,但是,如果你需要将它作为 gRPC 的服务描述文件,并且依赖于它来生成代码脚手架的话,那么你就需要安装了,因为要实现代码生成,依赖于 protobuf 的一些工具,所以,你需要进行安装。
其实 protobuf 的安装也是很简单的,只需要从 github 上将源码下载下来,然后编译安装即可,目前最新的版本是 3.11.2:
[root@liqiang.io]# wget https://github.com/protocolbuffers/protobuf/releases/download/v3.11.2/protobuf-all-3.11.2.tar.gz
[root@liqiang.io]# tar zxf protobuf-all-3.11.2.tar.gz
[root@liqiang.io]# cd protobuf-3.11.2
[root@liqiang.io]# ./configure -prefix=/usr/local/
[root@liqiang.io]# make && make install
[root@liqiang.io]# protoc --version
libprotoc 3.11.2
简单一看,安装完成。
updated at 2023-11-26
最新的 protoc 的编译方式已经改变了,所以可以直接预编译好的直接使用:
[root@liqiang.io]# wget https://github.com/protocolbuffers/protobuf/releases/download/v25.1/protoc-25.1-linux-x86_64.zip
[root@liqiang.io]# unzip protoc-25.1-linux-x86_64.zip
[root@liqiang.io]# sudo mv bin/protoc /usr/local/bin/
[root@liqiang.io]# sudo mv include/google /usr/local/include
[root@liqiang.io]# protoc --version
libprotoc 25.1
[root@liqiang.io]# go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
2. 编译 proto
既然安装好了,不妨尝试编译一个 proto 试验一下:
[root@liqiang.io]# cd examples
[root@liqiang.io]# mkdir tutorial
[root@liqiang.io]# protoc --go_out=tutorial addressbook.proto
[root@liqiang.io]# ll tutorial
total 12K
-rw-r--r--. 1 root root 8.7K Jan 2 12:55 addressbook.pb.go
OK,这样就表示安装正常。