• 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下。

     
  • 相关阅读:
    嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)
    嵌入式Linux驱动开发之helloword心得
    PJMEDIA之录音器的使用(capture sound to avi file)
    PJMEID学习之视频的捕捉与播放
    PJSIP-PJMEDIA【使用pjmedia 播放wav格式的音乐】
    PJSIP-PJLIB-Socket
    PJSIP-PJLIB(samples) (the usage of the pjlib lib) (eg:string/I/O)
    Start with PJSIP on windows
    Android实际开发之网络请求组件的封装(OkHttp为核心)
    Android实际开发中的首页框架搭建(二、首页框架实现)
  • 原文地址:https://www.cnblogs.com/iuyy/p/14130627.html
Copyright © 2020-2023  润新知