软件开发定制定制protobuf在linux下载编译和使用

目录


protobuf软件开发定制定制的下载和编译:

        到protobuf软件开发定制定制源码找到不同版本的压缩包,下载下来,并拉取到linux中。

        protobuf源码地址:

  • 软件开发定制定制查找下载不同版本的压缩包:

        软件开发定制定制进入官网点击tags,里面就有不同版本的protobuf的压缩包,选择版本,根据对应语言下载。

  • 编译protobuf,生成protoc编译器。
    • 使用tar命令解压:tar zxf protobuf-xxx
    • 进入解压后的文件夹:cd protobuf-xxx
    • 生成配置,主要是生成makefile:./configure
      • 如果没有configure文件,查找时否有autogen.sh文件,可以执行./autogen.sh,生成configure。
    • 编译:make
    • 安装到linux:make install
    • 更新动态链接为系统共享,否则时用protoc时会找不到动态库:ldconfig
  • 查看是否编译安装成功:

       执行protoc --version 显示出protobuf的版本,即编译成功。

编写proto文件来生成对应的.cc和.h文件:

编写的proto文件:

​编写生成.cc和.h脚本,使用protoc:

  • 导入目录设置

        使用--proto_path选项,后面跟需要解析的.proto文件所在目录。如果有多个目录,可以调用多次--proto_path选项。 -I 是 --proto_path的缩写。

  • 生成指定不同的代码

        上图中的--cpp_out选项,则是生成CPP相关代码。

  1. --cpp_out :在目标目录DST_DIR中产生C++代码
  2. --java_out :在目标目录DST_DIR中产生Java代码
  3. --python_out :在目标目录 DST_DIR 中产生Python代码
  4. --go_out :在目标目录 DST_DIR 中产生Go代码
  5. --ruby_out:在目标目录 DST_DIR 中产生Ruby代码
  6. --javanano_out:在目标目录DST_DIR中生成JavaNano
  7. --objc_out:在目标目录DST_DIR中产生Object代码
  8. --csharp_out:在目标目录DST_DIR中产生Object代码
  9. --php_out:在目标目录DST_DIR中产生Object代码
  • 执行脚本

        在对应目录下生成CPP可以使用的文件。

测试

简单的序列化与反序列化

 编写一个简单的proto文件,并用protoc生成.cc和.h文件。

 编写测试代码:

 Makefile文件:

 执行:

注意:并非编码成字符串数据,string只是作为编码的容器。所以会有乱码出现。

遇到的问题:

  • 需要时用c++11标准编译

  • undefined reference to `protobuf::person::PersonInfo::~PersonInfo()

        这时因为引用了protoc生成的.h和.cc文件,需要将生成的.cc文件一起编译。

  • 需要告诉编译器使用的动态库名。

  • error while loading shared libraries: libprotobuf.so.32: cannot open

        这是因为找不到libprotobuf.so.32动态库,需要将动态库的路径加到LD_LIBRARY_PATH环境变量中。

 将数据序列化成并报存到文件中,再将文件中的二进制数据都上来

fstream:对打开的文件可以进行读写操作。在构建对象时,可以打开文件,并选择打开方式读还是写,二进制方式还是文本方式。

从文件输入,并进行序列化:

 输出到文件函数:

 主函数:

makefile:

 运行:

 

 

 

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发