要在ubantu
上安装并使用C++
的Protobuf
,你需要先安装protobuf 编译器(protoc)
和protobuf C++ 库
。具体的安装步骤如下:
- 首先,你需要安装一些必要的工具和库。在终端中运行以下命令:
sudo apt-get update
sudo apt-get install autoconf automake libtool curl make g++ unzip
- 下载
protobuf
的源代码。:
如果你本机网络较为流畅可以直接在终端运行下面命令:
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.17.3/protobuf-all-3.17.3.tar.gz
或者直接访问Github
下载:
也可以选择其他版本,但是需要确保其发布的releases结构和下图一样
- 解压下载的文件,并进入解压后的目录:
tar -xvf protobuf-all-3.17.3.tar.gz
cd protobuf-3.17.3
- 配置并编译
protobuf
:
chmod +x configure
./configure
make
大概需要编译10分钟。
- 检查编译是否成功(可选):
大概也需要测试10分钟。
make check
- 安装 protobuf:
sudo make install
- 更新系统的动态链接库:
sudo ldconfig
- 验证安装:
protoc --version
显示 protobuf 版本号则证明安装成功。
- 简单测试能否正常使用
创建test_pb.proto
文件。
// 声明版本信息
syntax = "proto3";
// 声明namespace
package testpb;
message TestMessage {
string ttname = 1;
}
使用protoc
编译器编译test_pb.proto
文件。
protoc test_pb.proto --cpp_out=.
test_pb.cc
文件
# include <iostream>
# include "test_pb.pb.h"
// C++会将在.proto文件中定义的package理解为namespace。
using namespace testpb;
int main () {
TestMessage tm;
tm.set_ttname("Test pass.");
// 序列化
std::string test;
tm.SerializeToString(&test);
// 输出
std::cout << test << std::endl;
}
g++
编译。
g++ test_pb.cc test_pb.pb.cc -o test_pb -lprotobuf
运行可执行文件
./test_pb
输出:
Test pass.