美文网首页
嵌入式开发中使用protobuf

嵌入式开发中使用protobuf

作者: RonZheng2010 | 来源:发表于2019-04-10 21:05 被阅读0次

    1. 编译安装protobuf工具

    如果Ubuntu中缺省的protobuf工具不符合要求,则需要自己编译protobuf。
    如 Ubuntu 14.04缺省安装的是protobuf 2.5.0。

    $ sudo apt-get install protobuf-compiler
    $ protoc --version
    libprotoc 2.5.0
    

    1.1 编译本地protobuf工具

    如下以编译protobuf 3.7.1为例。首先编译本地编译工具protoc,protoc用于将.proto文件转换成C++。

    $ ../protobuf-3.7.1/configure --prefix=/usr
    $ sudo make install
    $ whereis protoc
    protoc: /usr/bin/protoc /usr/bin/X11/protoc
    

    1.2 编译目标板上的库

    如下的命令编译生成protobuf动态库。编译和使用从.proto文件得到的C++文件时,需要引用该库。

    $ ../protobuf-3.7.1/configure --host=arm-linux-gnueabi --with-protoc=/usr/bin/protoc \
    --disable-static --enable-shared
    $ make
    

    2. .proto文件

    2.1 书写 .proto 文件

    首先我们需要编写一个 proto 文件,定义我们程序中需要处理的结构化数据。在 protobuf 的术语中,结构化数据被称为 Message。proto 文件非常类似 java 或者 C 语言的数据定义。

    如下的ProtoDemo.proto是一个例子。

    $ cat ProbufDemo.proto 
    package ProbufDemo;
    
    enum Sex 
    {
        male = 0;
        female = 1;
    }
    
    message UserInfo 
    {
        required uint32 uid = 1;
        optional string nick_name = 2;
        required Sex sex = 3;
    }
    

    2.2 编译 .proto 文件

    写好 proto 文件之后,就可以用protoc将该文件编译成目标语言了,这里生成C++文件。

    假设.proto 文件放在 $SRC_DIR 下面,把生成的文件放在目录$DST_DIR下,则可以使用如下命令:

    • -I 指定文件搜索目录
    • --cpp_out指定生成的C++文件的存放位置
    protoc -I=$SRC_DIR --cpp_out=$DST_DIR  probufDemo.proto
    

    比如前面的例子,命令如下:

    protoc -I=. --cpp_out=src  probufDemo.proto
    

    将在src目录下生成两个文件:ProbufDemo.pb.h 和ProbufDemo.pb.cc,分别是C++ 类的头文件和实现文件。

    2.3 使用C++类

    除了依赖protobuf的库,.proto文件生成的类,本质上与自定义类并没有什么不同。

    相关文章

      网友评论

          本文标题:嵌入式开发中使用protobuf

          本文链接:https://www.haomeiwen.com/subject/fslniqtx.html