Linux下C++使用Protobuf的安装步骤(vscode)
一,下载网站
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文件,编译
新建一个文件夹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)相关推荐
- linux环境下questasim 10.7的安装步骤
linux环境:centos6.8系统 Questasim 10.7安装包 questasim_10.7_linux64.part2.rar_questasim_10.7_linux64-Linux文 ...
- linux postgresql 创建数据库,Linux下创建Postgresql数据库的方法步骤
Linux下创建Postgresql数据库的方法步骤 前言 PostgreSQL (也叫 Postgres)是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行. ...
- Linux 下非 root 用户 Conda 安装生物信息 R 软件包 MetaboAnalystR 演示
(首发地址:学习日记 https://www.learndiary.com/2022/06/metaboanalystr/ ) 前些天演示了一下 Linux 下非 root 用户 Conda 安装生 ...
- linux下Redis以及phpredis扩展安装
linux下Redis以及phpredis扩展安装 首先安装redis: 一.下载redis: wgethttp://download.redis.io/releases/redis-2.8.10.t ...
- Windows下 maven3.0.4的安装步骤+maven配置本地仓库(转载)
转自:Windows下 maven3.0.4的安装步骤+maven配置本地仓库 简单讲下maven的安装步骤: 1.在安装maven之前,先确保已经安装JDK1.6及以上版本,并且配置好环境变量. 2 ...
- Linux下MySQL的几种安装方式
闲来有空,整理下Linux下Mysql的几种安装方式,分别使用yum/rpm.常规方式编译安装.cmake方式编译安装以及使用二进制方式免编译安装MySQL Linux系统环境: CentOS rel ...
- Linux下通过源码编译安装程序
本文简单的记录了下,在Linux下如何通过源码安装程序,以及相关的知识. 一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的 ...
- Linux下VTK、ITK的安装及运行 转载
Linux下VTK.ITK的安装及运行 转载 (2011-08-01 19:42:10) 转载▼ 标签: it 1.安装VTK (1)在www.cmake.org下载cmake-2.4.6.ta ...
- LINUX下tar.gz包的安装方法
LINUX下tar.gz包的安装方法 在tar.gz的东西不多了---- ======================================== 大多以tar.gz 和tar.bz2打包软件 ...
最新文章
- 【转】 Android WebView内容宽度自适应
- 一行代码快速搞定Flowable断点下载(上)
- 如何用python创建一个下载网站-用Python写一个简单的网页下载
- iOS 深拷贝和浅拷贝
- 1114:白细胞计数
- 困扰我多年的跟腱病是如何康复的?(2)
- 深入理解操作系统内核架构(送书)!
- 超简单调整Fedora25遇到的字体小问题——字体渲染问题和输入框内容显示不全...
- java object数组转实体类_详解Java中String JSONObject JSONArray List实体类转换
- phpcms首页:调用全站所有tags关键字 - tags总结篇
- 系统学习深度学习(二十六)--BiRNN
- 浅谈Js对象的概念、创建、调用、删除、修改!
- Spring异步任务处理,@Async的配置和使用
- 【PageHelper】实现拦截pageNum和pageSize
- Thinkpad T470 内置电池问题
- kears编写CNN网络,实现对mnist的识别
- python实现千牛客服自动回复语_千牛自动回复话术
- OSINT + Python #x3D; 自定义黑客
- Java核心技术汇总
- java工程师的薪资真的有那么高吗?
热门文章
- 全球及中国红外探测器芯片行业发展动态及投资应用前景调研报告2021-2027年
- 低成本血氧仪方案设计
- 大雁牌计算机在线使用,用大雁牌计算器解决有关计算问题
- 改变网changeself.com,记录着改变生活、改变态度、改变思维方式、改变特质、改变行为方式,一切从改变自己身上的特质开启
- Windows版Redis和Redis Desktop Manager安装
- 红日安全 ATT&CK VulnStack靶场(三)
- 倍投技巧 - 凯利公式教你如何用正确的方法投资
- 怎么录制明日之后游戏视频
- codeforces 571A Lengthening Sticks 组合数学 插板法
- 超星高级语言程序设计实验作业 (实验04 数组及其在程序设计中的应用)(二)