一,下载网站

Releases · protocolbuffers/protobuf · GitHub

选择cpp版本,上传到linux服务器的目录,我这里上传到/home/linyu/upload

这里下载的是 protobuf-cpp-3.21.3.tar.gz 。

二,安装

在/home/linyu/upload的目录下执行以下指令:

 tar -xzf protobuf-cpp-3.21.3.tar.gz
​cd protobuf-3.21.3#把protobuf安装到自己指定的目录./configure --prefix=/home/linyu/include/protobuf
​make
​make check
​make install 

三,配置环境变量

进入到自己的目录下/home/linyu/,执行vi profile,添加以下命令到最后一行,保存退出。

#配置protoc的环境变量
export PROTOC_HOME=/home/linyu/include/protobuf
export PATH=$PROTOC_HOME/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#因为protobuf安装到自己指定的目录,所以要指定共享库的文件目录,避免到时候找不到
export LD_LIBRARY_PATH=/home/linyu/include/protobuf/lib:$LD_LIBRARY_PATH

执行source profile以后,再执行以下的命令,查看环境变量是否配置成功:

protoc --version

四,编写proto文件,编译

  1. 新建一个文件夹proto,用于保存.proto文件

mkdir proto
cd proto
2. 创建一个Person.proto文件
syntax ="proto2";
​
package linyu;
​
message Person{optional string name=1;optional int32 age=2;enum Sex{MALE=0;FEMALE=1;}optional Sex sex=4;
}

3. 写一个编译脚本run.sh

proto_dir=./proto_src=./src#删掉生成文件,保证每次执行都是最新的
rm -rf src#创建一个目录,用来保存pb.h pb.cc 让代码看起来更干净一些
mkdir src#以c++的格式生成pb文件,*.pb.h *.pb.cc
protoc -I=$proto_dir --cpp_out=$proto_src $proto_dir/*.proto

执行脚本./run.sh,进入src目录。拷贝生成好的Person.pb.cc和Person.pb.h文件到等下要编写的程序main.cpp的同级目录下。

五,新建C++程序,使用生成好的proto文件

编写一个main.cpp

#include <iostream>
#include "Person.pb.h"int main(int argc, char** argv)
{//创建一个Person结构linyu::Person person1;person1.set_age(25);person1.set_name("小宇");
​//将结构序列化成stringstd::string str = "";person1.SerializeToString(&str);std::cout << str << std::endl;
​//创建一个空结构,将person1的序列化结构(string)反序列化给person2实现值的传递linyu::Person person2;person2.ParseFromString(str);std::cout << person2.age() << " " << person2.name() << std::endl;return 0;
}

注:程序采用vscode连接上远程的linux服务器上编写C++程序。

以下两个文件需要修改一下,分别是c_cpp_properties.json和tasks.json

c_cpp_properties文件说明:

//该文件的修改主要是针对vscode不会报错,有提示等等
{"configurations": [{"name": "linux-gcc-x64","includePath": ["${workspaceFolder}/**",    "/home/linyu/include/","./"],"compilerPath": "/bin/gcc","cStandard": "${default}","cppStandard": "${default}","intelliSenseMode": "linux-gcc-x64","compilerArgs": [""]}],"version": 4
}

tasks.json文件说明:

/*
"-I"指定包含的头文件目录
"-L"指令链接的库目录
"-l"指令链接的库名称
*/{"tasks": [{"type": "cppbuild","label": "C/C++: g++ 生成活动文件","command": "/bin/g++","args": ["-fdiagnostics-color=always","-g","main.cpp","Person.pb.cc","-o","${fileDirname}/${fileBasenameNoExtension}",  "-I","/home/linyu/include","-I","/home/linyu/include/protobuf/include/","-L","/home/linyu/include/protobuf/lib/","-lzmq","-lpthread","-lprotobuf"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

如果采用命令行编译,则输入一下命令:

g++ -g main.cpp Person.pb.cc -o /home/linyu/zmqTest/push/main -I /home/linyu/include -I /home/linyu/include/protobuf/include/ -L /home/linyu/include/protobuf/lib/ -lzmq -lpthread -lprotobuf

点击运行,查看结果。

思考:序列化成二进制的方式,以及如何从二进制反序列化对象结构?

Linux下C++使用Protobuf的安装步骤(vscode)相关推荐

  1. linux环境下questasim 10.7的安装步骤

    linux环境:centos6.8系统 Questasim 10.7安装包 questasim_10.7_linux64.part2.rar_questasim_10.7_linux64-Linux文 ...

  2. linux postgresql 创建数据库,Linux下创建Postgresql数据库的方法步骤

    Linux下创建Postgresql数据库的方法步骤 前言 PostgreSQL (也叫 Postgres)是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行. ...

  3. Linux 下非 root 用户 Conda 安装生物信息 R 软件包 MetaboAnalystR 演示

    (首发地址:学习日记 https://www.learndiary.com/2022/06/metaboanalystr/  ) 前些天演示了一下 Linux 下非 root 用户 Conda 安装生 ...

  4. linux下Redis以及phpredis扩展安装

    linux下Redis以及phpredis扩展安装 首先安装redis: 一.下载redis: wgethttp://download.redis.io/releases/redis-2.8.10.t ...

  5. Windows下 maven3.0.4的安装步骤+maven配置本地仓库(转载)

    转自:Windows下 maven3.0.4的安装步骤+maven配置本地仓库 简单讲下maven的安装步骤: 1.在安装maven之前,先确保已经安装JDK1.6及以上版本,并且配置好环境变量. 2 ...

  6. Linux下MySQL的几种安装方式

    闲来有空,整理下Linux下Mysql的几种安装方式,分别使用yum/rpm.常规方式编译安装.cmake方式编译安装以及使用二进制方式免编译安装MySQL Linux系统环境: CentOS rel ...

  7. Linux下通过源码编译安装程序

    本文简单的记录了下,在Linux下如何通过源码安装程序,以及相关的知识. 一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的 ...

  8. Linux下VTK、ITK的安装及运行 转载

    Linux下VTK.ITK的安装及运行  转载 (2011-08-01 19:42:10) 转载▼ 标签: it   1.安装VTK (1)在www.cmake.org下载cmake-2.4.6.ta ...

  9. LINUX下tar.gz包的安装方法

    LINUX下tar.gz包的安装方法 在tar.gz的东西不多了---- ======================================== 大多以tar.gz 和tar.bz2打包软件 ...

最新文章

  1. 【转】 Android WebView内容宽度自适应
  2. 一行代码快速搞定Flowable断点下载(上)
  3. 如何用python创建一个下载网站-用Python写一个简单的网页下载
  4. iOS 深拷贝和浅拷贝
  5. 1114:白细胞计数
  6. 困扰我多年的跟腱病是如何康复的?(2)
  7. 深入理解操作系统内核架构(送书)!
  8. 超简单调整Fedora25遇到的字体小问题——字体渲染问题和输入框内容显示不全...
  9. java object数组转实体类_详解Java中String JSONObject JSONArray List实体类转换
  10. phpcms首页:调用全站所有tags关键字 - tags总结篇
  11. 系统学习深度学习(二十六)--BiRNN
  12. 浅谈Js对象的概念、创建、调用、删除、修改!
  13. Spring异步任务处理,@Async的配置和使用
  14. 【PageHelper】实现拦截pageNum和pageSize
  15. Thinkpad T470 内置电池问题
  16. kears编写CNN网络,实现对mnist的识别
  17. python实现千牛客服自动回复语_千牛自动回复话术
  18. OSINT + Python #x3D; 自定义黑客
  19. Java核心技术汇总
  20. java工程师的薪资真的有那么高吗?

热门文章

  1. 全球及中国红外探测器芯片行业发展动态及投资应用前景调研报告2021-2027年
  2. 低成本血氧仪方案设计
  3. 大雁牌计算机在线使用,用大雁牌计算器解决有关计算问题
  4. 改变网changeself.com,记录着改变生活、改变态度、改变思维方式、改变特质、改变行为方式,一切从改变自己身上的特质开启
  5. Windows版Redis和Redis Desktop Manager安装
  6. 红日安全 ATT&CK VulnStack靶场(三)
  7. 倍投技巧 - 凯利公式教你如何用正确的方法投资
  8. 怎么录制明日之后游戏视频
  9. codeforces 571A Lengthening Sticks 组合数学 插板法
  10. 超星高级语言程序设计实验作业 (实验04 数组及其在程序设计中的应用)(二)