Linux下编译protobuf

下载

工程地址为https://github.com/protocolbuffers/protobuf

Protocol Buffers v3.17.0为例:下载地址为Protocol Buffers v3.17.0。下载版本比较多:


在这里插入图片描述


需要编译的是C++版本,可以选择protobuf-cpp-3.17.0.tar.gz,也可以选择Source code (tar.gz),下面以Source code (tar.gz)为例。下载后的文件为protobuf-3.17.0.tar.gz

编译与安装

步骤如下:

  • tar -zxvf protobuf-3.17.0.tar.gz

  • cd protobuf-3.17.0

  • cd cmake

  • cmake . -Dprotobuf_BUILD_TESTS=OFF(第一步)

  • cmake --build . (或者使用make)

  • make install DESTDIR=安装目录(也可以在第一步中通过-DCMAKE_INSTALL_PREFIX来设置安装目录)

编译安装完成后,在安装目录下,将最底层中的文件夹bin(protoc可执行文件)、include(头文件)、lib64(库文件)放入到新文件夹protobuf中。(注意,这里生成的是静态库,如何生成动态库暂时不清楚。)。

最终protobuf目录结构如下:


在这里插入图片描述


使用

创建一个test.proto,内容如下:

syntax = "proto3"; // 使用proto3语法
 
message SearchRequest {
  string query = 1;
  int32 page_number = 2;
  int32 result_per_page = 3;
}

然后使用bin目录中的protoc生成test.pb.h和test.pb.cc文件,命令如下(–cpp_out指定生成文件位置):

protoc test.proto --cpp_out=.

最后是main.cpp,内容如下:

#include <iostream>
#include "test.pb.h"

int main()
{
	SearchRequest request;
	request.set_query("xxx");
	std::cout << request.query() << std::endl;
	return 0;
}

对其进行编译,命令如下:

g++ main.cpp test.pb.cc -std=c++11 -I protobuf/include/ -L protobuf/lib64/ -lprotobuf

编译成功,执行a.out,输出如下:

xxx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值