0. 概述

最近收到反馈,有同学在看我的 GRPC 系列 的时候发现第一篇就进行不下去了,因为他们按照我的介绍进行操作的时候发现无法编译 protobuf,“明明在我的环境上是好的”,经过邮件来回沟通之后发现原来是我漏了一个 protobuf 的安装指导,所以这里补上。

1. 安装 protobuf

可能你会奇怪,protobuf 不是一个数据结构描述格式吗?为什么需要安装?是的,如果你只是将它作为数据交换格式,那么很可能是不用安装的,但是,如果你需要将它作为 gRPC 的服务描述文件,并且依赖于它来生成代码脚手架的话,那么你就需要安装了,因为要实现代码生成,依赖于 protobuf 的一些工具,所以,你需要进行安装。

其实 protobuf 的安装也是很简单的,只需要从 github 上将源码下载下来,然后编译安装即可,目前最新的版本是 3.11.2:

  1. [root@liqiang.io]# wget https://github.com/protocolbuffers/protobuf/releases/download/v3.11.2/protobuf-all-3.11.2.tar.gz
  2. [root@liqiang.io]# tar zxf protobuf-all-3.11.2.tar.gz
  3. [root@liqiang.io]# cd protobuf-3.11.2
  4. [root@liqiang.io]# ./configure -prefix=/usr/local/
  5. [root@liqiang.io]# make && make install
  6. [root@liqiang.io]# protoc --version
  7. libprotoc 3.11.2

简单一看,安装完成。


updated at 2023-11-26

最新的 protoc 的编译方式已经改变了,所以可以直接预编译好的直接使用:

  1. [root@liqiang.io]# wget https://github.com/protocolbuffers/protobuf/releases/download/v25.1/protoc-25.1-linux-x86_64.zip
  2. [root@liqiang.io]# unzip protoc-25.1-linux-x86_64.zip
  3. [root@liqiang.io]# sudo mv bin/protoc /usr/local/bin/
  4. [root@liqiang.io]# sudo mv include/google /usr/local/include
  5. [root@liqiang.io]# protoc --version
  6. libprotoc 25.1
  7. [root@liqiang.io]# go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

2. 编译 proto

既然安装好了,不妨尝试编译一个 proto 试验一下:

  1. [root@liqiang.io]# cd examples
  2. [root@liqiang.io]# mkdir tutorial
  3. [root@liqiang.io]# protoc --go_out=tutorial addressbook.proto
  4. [root@liqiang.io]# ll tutorial
  5. total 12K
  6. -rw-r--r--. 1 root root 8.7K Jan 2 12:55 addressbook.pb.go

OK,这样就表示安装正常。

3. Ref