ProtoBuf - 1 - 下载和环境配置

一、在 Windows 下的安装

1、下载 ProtoBuf 编译器

下载地址:https://github.com/protocolbuffers/protobuf/releases可以不用下载最新版本,下面以 v21.11 为例,具体的下载根据自己电脑情况选择。

文件名 大小 发布日期
protoc-21.11-osx-x86_64.zip 1.42MB Dec 8, 2022
protoc-21.11-win32.zip 2.2MB Dec 8, 2022
protoc-21.11-win64.zip 2.17MB Dec 8, 2022

下载之后将压缩包解压到本地目录下。解压后的文件内包含 bin、include 文件,以及一个 readme.txt。

名称 类型
bin 文件夹
include 文件夹
readme.txt 文本文档

2、配置环境变量

把解压后文件中的 bin 目录配置到系统环境变量的 Path 中去。

环境变量配置步骤:
  1. 打开环境变量设置窗口(可通过 "此电脑" 右键 "属性"→"高级系统设置"→"环境变量" 打开)。
  2. 在 "系统变量" 中找到 Path 变量,点击 "编辑"。
  3. 点击 "新建",将解压后 bin 目录的路径(例如:D:\protoc-21.11-win64\bin)添加进去。
  4. 点击 "确定" 保存配置。

3、检查是否配置成功

打开 cmd,输入以下命令:

bash 复制代码
protoc --version

若显示版本信息(如:libprotoc 3.21.11),说明配置成功。

bash 复制代码
Microsoft Windows [版本 10.0.19045.2604]
(c) Microsoft Corporation。保留所有权利。

C:\Users>protoc --version
libprotoc 3.21.11

C:\Users>

走到这里,恭喜你 ProtoBuf 安装成功!!!

二、ProtoBuf 在 Linux 下的安装

1、下载 ProtoBuf

(1)安装依赖库

下载 ProtoBuf 前一定要安装依赖库:autoconf automake libtool curl make g++ unzip。如未安装,根据系统类型执行以下安装命令:

  • Ubuntu 用户:
bash 复制代码
sudo apt-get install autoconf automake libtool curl make g++ unzip -y
  • CentOS 用户:
bash 复制代码
sudo yum install autoconf automake libtool curl make gcc-c++ unzip
(2)下载 ProtoBuf 安装包

下载地址:https://github.com/protocolbuffers/protobuf/releases可以不用下载最新版本,课件以 v21.11 为例,具体的下载根据自己电脑情况选择。

文件名 大小 发布日期 适用场景
protobuf-all-21.11.tar.gz 7.31MB Dec 10, 2022 支持全部语言
protobuf-all-21.11.zip 9.29MB Dec 8, 2022 支持全部语言
protobuf-cpp-3.21.11.tar.gz 4.63MB Dec 10, 2022 C++ 语言
protobuf-cpp-3.21.11.zip 5.62MB Dec 8, 2022 C++ 语言
protobuf-csharp-3.21.11.tar.gz 5.35MB Dec 10, 2022 C# 语言
protobuf-csharp-3.21.11.zip 6.58MB Dec 8, 2022 C# 语言
protobuf-java-3.21.11.tar.gz 5.32MB Dec 10, 2022 Java 语言
protobuf-java-3.21.11.zip 6.67MB Dec 8, 2022 Java 语言
protobuf-objectivec-3.21.11.tar.gz 4.99MB Dec 10, 2022 Objective-C 语言
protobuf-objectivec-3.21.11.zip 6.12MB Dec 8, 2022 Objective-C 语言
protobuf-php-3.21.11.tar.gz 4.94MB Dec 10, 2022 PHP 语言
protobuf-php-3.21.11.zip 6.05MB Dec 8, 2022 PHP 语言
protobuf-python-4.21.11.tar.gz 4.99MB Dec 10, 2022 Python 语言
protobuf-python-4.21.11.zip 6.05MB Dec 8, 2022 Python 语言
protobuf-ruby-3.21.11.tar.gz 4.87MB Dec 10, 2022 Ruby 语言
protobuf-ruby-3.21.11.zip 5.91MB Dec 8, 2022 Ruby 语言
选择说明:
  • 若要在 C++ 下使用 ProtoBuf,选择 cpp 相关压缩包;
  • 若要在 Java 下使用 ProtoBuf,选择 java 相关压缩包;
  • 其他语言选择对应的链接即可;
  • 希望支持全部语言,选择 all 相关压缩包。
下载与解压操作:

这里以支持全部语言为例,选择 protobuf-all-21.11.zip,执行以下命令:

下载安装包:

bash 复制代码
wget https://github.com/protocolbuffers/protobuf/releases/download/v21.11/protobuf-all-21.11.zip

解压 zip 包:

bash 复制代码
unzip protobuf-all-21.11.zip

进入解压后的目录:

bash 复制代码
cd protobuf-21.11

解压后目录内容如下:

bash 复制代码
lfz@139-159-150-152:~/install/protobuf-21.11$ ls
CMakeLists.txt          CONTRIBUTING.md  examples        Makefile.am    protobuf.bzl          protobuf_version.bzl  third_party
CONTRIBUTORS.txt        depcomp          generate_descriptor_proto.sh  m4             protobuf_deps.bzl     README.md             util
build_files_updated_unittest.sh  editors          global.json     missing        protobuf-lite.pc.in   ruby                   update_file_lists.sh
config.sub              conformance      install-sh      objectivec     protobuf.pc.in        src                    util
configure               csharp           java            php            protobuf.podspec      test-driver           WORKSPACE
configure.ac            depcomp          ltmain.sh       python         protobuf_release.bzl  third_party           protobuf_deps.bzl
LICENSE                 docs             maven_install.json  protobuf_version.bzl  protobuf-test         test-driver           update_file_lists.sh

2、安装 ProtoBuf

进入解压好的文件目录,执行以下命令:

第一步:执行 autogen.sh(仅全部语言版本需要,单一语言版本无需执行)
bash 复制代码
./autogen.sh
第二步:执行 configure(二选一)

默认安装(安装在 /usr/local 目录,lib、bin 分散):

bash 复制代码
./configure

自定义安装目录(统一安装在 /usr/local/protobuf 下):

bash 复制代码
./configure --prefix=/usr/local/protobuf
第三步:依次执行以下命令
bash 复制代码
# 执行测试(约15分钟左右,若报错可参考下方解决方法)
make check

# 执行安装
sudo make install
make check 报错处理:

部分用户可能在执行 make check 时出现错误,示例如下:

bash 复制代码
make[2]: Leaving directory /home/hzh/protobuf-21.11/src
make check-TESTS
make[2]: Entering directory '/home/hzh/protobuf-21.11/src'
make[3]: Entering directory '/home/hzh/protobuf-21.11/src'
FAIL: protobuf-test
PASS: protobuf-lazy-descriptor-test
PASS: protobuf-lite-test
PASS: google/protobuf/compiler/zip_output_unittest.sh
PASS: google/protobuf/io/gzip_stream_unittest.sh
PASS: protobuf-lite-arena-test
PASS: no-warning-test
make[4]: Entering directory '/home/hzh/protobuf-21.11/src'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/hzh/protobuf-21.11/src'
Testsuite summary for Protocol Buffers 3.21.11
# TOTAL: 7
# PASS: 6
# XFAIL: 0
# SKIP: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
See src/test-suite.log
Please report to protobuf@googlegroups.com
make[3]: *** [test-suite.log] Error 1
make[3]: Leaving directory '/home/hzh/protobuf-21.11/src'
make[2]: *** [check-TESTS] Error 2
报错原因及解决方法:

报错原因是 test 模块的测试用例对服务器环境要求严格,需要增大 swap 分区。具体操作参考:https://blog.csdn.net/AlexWang30/article/details/90341172建议:先扩大 3G swap 分区,再执行 make check;若仍报错,扩大到 5G 后重新执行。

成功标志:

执行 make check 后,显示以下内容即测试通过,可继续执行 sudo make install:

bash 复制代码
PASS: protobuf-test
PASS: protobuf-lazy-descriptor-test
PASS: protobuf-lite-test
PASS: google/protobuf/compiler/zip_output_unittest.sh
PASS: google/protobuf/io/gzip_stream_unittest.sh
PASS: protobuf-lite-arena-test
PASS: no-warning-test
Testsuite summary for Protocol Buffers 3.21.11
# TOTAL: 7
# PASS: 7
# XFAIL: 0
# SKIP: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
make[3]: Leaving directory '/home/hyb/protobuf-3.21.11/src'
make[2]: Leaving directory '/home/hyb/protobuf-3.21.11/src'
make[1]: Leaving directory '/home/hyb/protobuf-3.21.11/src'
第四步:配置环境变量(仅自定义安装目录时需要)

若执行 configure 时选择了自定义安装目录(./configure --prefix=/usr/local/protobuf),需在 /etc/profile 中添加以下内容:

编辑 /etc/profile 文件:

bash 复制代码
sudo vim /etc/profile

在文件末尾添加以下内容:

bash 复制代码
# 动态库搜索路径:程序加载运行期间查找动态链接库时指定除系统默认路径之外的其他路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/

# 静态库搜索路径:程序编译期间查找动态链接库时指定查找共享库的路径
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/

# 执行程序搜索路径
export PATH=$PATH:/usr/local/protobuf/bin/

# C程序头文件搜索路径
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/

# C++程序头文件搜索路径
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/

# pkg-config 路径
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/

保存并退出编辑(vim 中输入 :wq 回车)。

重新执行 /etc/profile 文件,使配置生效:

bash 复制代码
source /etc/profile

3、检查是否安装成功

输入以下命令查看版本,有显示说明安装成功:

bash 复制代码
protoc --version

示例:

bash 复制代码
hyb@139-159-150-152:~/install/protobuf-21.11$ protoc --version
libprotoc 3.21.11

走到这里,恭喜你 ProtoBuf 安装成功!!!

相关推荐
_OP_CHEN44 分钟前
C++进阶:(十六)从裸指针到智能指针,C++ 内存管理的 “自动驾驶” 进化之路
开发语言·c++
努力学习的小廉1 小时前
【QT(二)】—— 初识QT
开发语言·qt
爱学习的小邓同学1 小时前
C++ --- map/set的使用
开发语言·c++
weixin_421133411 小时前
JShielder
开发语言
MSTcheng.1 小时前
【C++进阶】继承(下)——挖掘继承深处的奥秘!
开发语言·c++
RisunJan1 小时前
【HarmonyOS】鸿蒙开发语言的选择
开发语言·华为·harmonyos
学困昇1 小时前
Linux基础开发工具(上):从包管理到“进度条”项目实战,掌握 yum/vim/gcc 核心工具
linux·运维·开发语言·数据结构·c++·vim
雨落在了我的手上1 小时前
C语言入门(二十五):自定义类型:结构体
c语言·开发语言
Yan-英杰1 小时前
openEuler 25.09 VM虚拟机实测:性能与安全双维度测评
服务器·开发语言·科技·ai·大模型