Linux安装protobuf(C++)和简单使用

本文档详细介绍了在Linux(CentOS7)上安装protobuf v3.19.4的步骤,包括下载、解压、安装依赖、编译、测试和安装。之后,展示了如何创建.proto文件,使用protoc编译生成C++代码,并编写程序实现序列化和反序列化的示例。在完成这些步骤后,还解释了如何处理编译时可能遇到的库找不到的问题,并给出了运行程序的输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux安装protobuf(C++)和简单使用

下载protobuf

protobuf下载链接

第一步:下载

wget https://github.com/protocolbuffers/protobuf/releases/download/v3.19.4/protobuf-all-3.19.4.tar.gz

第二步:安装

tar zxvf protobuf-all-3.19.4.tar.gz		//解压
cd protobuf-3.19.4/						//进入解压目录
//检查并安装以下环境,本次使用centos7环境,Ubuntu使用apt-get安装。
sudo yum install autoconf 
sudo yum install automake 
sudo yum install libtool
//以上安装成功后执行下面
./autogen.sh
//生成编译配置文件成功,运行配置脚本
./configure
make  				//要编译很久
make check    		//测试
make install    	//安装

第三步:安装成功

protoc --version    //查看版本

简单使用protobuf

关于protobuf的介绍参考:Protobuf介绍
完成序列化和反序列化,本实验目录在:/home/admin/Learn_MyProtobuf
创建一个.proto文件:myAccount.proto,内容如下

syntax = "proto3";
package IM;
message Account {
    //账号
    uint64 ID = 1;
    //名字
    string name = 2;
    //密码
    string password = 3;
}
 
message User {
    Account user = 1;
}

编译.proto文件,生成C++语言的定义及操作文件

protoc -I=/home/admin/Learn_MyProtobuf --cpp_out=/home/admin/Learn_MyProtobuf /home/admin/Learn_MyProtobuf/myAccount.proto

生成的文件:myAccount.pb.h, myAccount.pb.cc

编写程序main.cpp

#include <iostream>
#include <fstream>
#include "myAccount.pb.h"
 
using namespace std;
 
int main(int argc, char** argv)
{
    IM::Account account1;
    account1.set_id(1);
    account1.set_name("ysl");
    account1.set_password("123456");
 
    string serializeToStr;
    account1.SerializeToString(&serializeToStr);
    cout <<"序列化后的字节:"<< serializeToStr << endl;
 
 
    IM::Account account2;
    if(!account2.ParseFromString(serializeToStr))
    {
        cerr << "failed to parse student." << endl;
        return -1;
    }
    cout << "反序列化:" << endl;
    cout << account2.id() << endl;
    cout << account2.name() << endl;
    cout << account2.password() << endl;
 
    google::protobuf::ShutdownProtobufLibrary();
 
    return 0;
}

对main.cpp进行编译

g++ main.cpp myAccount.pb.cc myAccount.pb.h -o main -lprotobuf -std=c++11 -lpthread -Bstatic

编译过程中可能出现如下问题:
error while loading shared libraries: libprotobuf.so.30: cannot open shared object file: No such file
如果按照我上面的protobuf按照步骤,一般是因为安装路径没有加入到配置中所以报错,否则还是重新安装一遍吧。
按照上面的步骤安装的protobuf,它的库在如下位置:

/usr/local/lib

最好写到/etc/profile中,然后 source /etc/profile 一下

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

此时运行程序:

./main

得到结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值