zoukankan      html  css  js  c++  java
  • Utunbu 源码编译 protobuf

    1:安装相关工具包:

    $ sudo apt-get install autoconf automake libtool curl make g++ unzip

    2:下载源码,可以到网站https://github.com/protocolbuffers/protobuf/releases/latest选择自己需要的版本,也可以使用git clone下载

    这里选择到网站自己下载:https://github.com/protocolbuffers/protobuf/releases/download/v3.14.0/protobuf-csharp-3.14.0.tar.gz

    3:选择安装位置[可选]:

      ./configure --prefix=/home/liu/Desktop/Protobuf/pb

    注意:上述命令可替换为

    ./configure

    则默认安装位置在:/usr/local

    4:编译安装

     make
     make check
     sudo make install
     sudo ldconfig # refresh shared library cache.

    注意:即使"make check"失败,仍然可以继续执行后续步䠫,只是有可能protobuf库的某些特性不能正确的使用!

    安装成功后pb文件内容:

    使用例子:

    1:编写People.proto文件

    package demo;  
      
    message People {  
      required string name = 1;  
      required int32 id = 2;  
      required string email = 3;  
    }

    2:使用上面生成安装成功的编译器(在安装目录bin里面的protoc可执行文件)编译.proto文件

    在这里本人将Prople.proto文件放在了bin目录下,并执行了命令,然后生成相应的.cc和.h文件:

    ./protoc -I=. --cpp_out=. People.proto

     3:使用[在Clion]:

    c++文件:

    #include "pbcch/People.pb.h"
    #include <iostream>
    #include <string>
    using namespace demo;
    using namespace std;
    
    int main() {
        People sendpeople;
        sendpeople.set_email("liudd3610@163.com");
        sendpeople.set_name("FF");
        sendpeople.set_id(18);
        char bt[sendpeople.ByteSizeLong()];
        memset(bt,0,sendpeople.ByteSizeLong());
        sendpeople.SerializePartialToArray(bt,sendpeople.ByteSizeLong());
        cout << "------network------" << endl;
        char recvbt[1024];
        int recvsize = sendpeople.ByteSizeLong();
        memset(recvbt,0,1024);
        strcpy(recvbt,bt);
        People recvpeople;
        recvpeople.ParseFromArray(recvbt,recvsize);
        cout << recvpeople.email() << "  " << recvpeople.name() << "  " << recvpeople.id() << endl;
    
    
        return 0;
    }

    项目结构截图:

    注意:Include,Lib文件夹下的内容均复制于上述的安装目录pb下。

     
  • 相关阅读:
    Mac电脑上的软件以及作用整理
    sed命令在mac和linux下的区别
    gin框架开启web跨域
    Mac下输入特殊字符的总结
    4月4悼念日 多数app 或者网站变成灰色的实现效果
    Mqtt 客户端多主题订阅
    paho.mqtt.golang--option.go 源码解析
    MQTT服务器(Broker)
    asdine/storm学习笔记
    vuex基本使用教程
  • 原文地址:https://www.cnblogs.com/iuyy/p/14130627.html
Copyright © 2011-2022 走看看