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

 
原文地址:https://www.cnblogs.com/iuyy/p/14130627.html