当前位置:   article > 正文

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

libprotoc 3.19.4

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    	//安装
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

第三步:安装成功

protoc --version    //查看版本
  • 1

简单使用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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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

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

生成的文件: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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

对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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/1009036
推荐阅读
相关标签
  

闽ICP备14008679号