ubuntu安装protobuf

下载

复制代码
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.19.4/protobuf-all-3.19.4.tar.gz

安装

bash 复制代码
tar zxvf protobuf-all-3.19.4.tar.gz		//解压
cd protobuf-3.19.4/						//进入解压目录
//检查并安装以下环境,本次使用centos7环境,Ubuntu使用apt-get安装。
sudo apt install autoconf 
sudo apt install automake 
sudo apt install libtool
//以上安装成功后执行下面
./autogen.sh
//生成编译配置文件成功,运行配置脚本
./configure
make  				//要编译很久
make check    		//测试
make install    	//安装

sudo ldconfig        //刷新动态库权限,否则即使安装成功系统也无法识别

测试

查看protoc版本

bash 复制代码
protoc --version    //查看版本

代码测试

首先编写proto文件

cpp 复制代码
syntax = "proto3";
package IM;
message Account {
    //账号
    uint64 ID = 1;
    //名字
    string name = 2;
    //密码
    string password = 3;
}
 
message User {
    Account user = 1;
}

生成代码

cpp 复制代码
protoc --cpp_out=./ myAccount.proto
cpp 复制代码
#include <iostream>
#include <fstream>
#include "myAccount.pb.h"
 
using namespace std;
 
int main(int argc, char** argv)
{
    IM::Account account1;
    account1.set_id(1);
    account1.set_name("ysl");
    account1.set_password("123456");
 
    string serializeToStr;
    account1.SerializeToString(&serializeToStr);
    cout <<"序列化后的字节:"<< serializeToStr << endl;
 
 
    IM::Account account2;
    if(!account2.ParseFromString(serializeToStr))
    {
        cerr << "failed to parse student." << endl;
        return -1;
    }
    cout << "反序列化:" << endl;
    cout << account2.id() << endl;
    cout << account2.name() << endl;
    cout << account2.password() << endl;
 
    google::protobuf::ShutdownProtobufLibrary();
 
    return 0;
}

编译运行

bash 复制代码
g++ main.cpp myAccount.pb.cc myAccount.pb.h -o main -lprotobuf -std=c++11 -lpthread -Bstatic
相关推荐
乾元11 小时前
身份与访问:行为生物识别(按键习惯、移动轨迹)的 AI 建模
运维·网络·人工智能·深度学习·安全·自动化·安全架构
ghostwritten11 小时前
春节前夕,运维的「年关」:用 Kubeowler 给集群做一次「年终体检」
运维·云原生·kubernetes
予枫的编程笔记11 小时前
【Linux进阶篇】Linux后台运行避坑指南:nohup、& 用法及Systemd守护进程实操
linux·进程管理·linux运维·nohup·systemctl·ps命令·kill命令
code monkey.11 小时前
【Linux之旅】Linux 进程间通信(IPC)全解析:从管道到共享内存,吃透进程协作核心
linux·c++·ipc
匆匆那年96711 小时前
llamafactory推理消除模型的随机性
linux·服务器·学习·ubuntu
好好学习天天向上~~11 小时前
5_Linux学习总结_vim
linux·学习·vim
馨谙11 小时前
Ansible模块化Playbook管理:静态导入与动态包含详解
运维·ansible
聆风吟º16 小时前
CANN开源项目深度实践:基于amct-toolkit实现自动化模型量化与精度保障策略
运维·开源·自动化·cann
Coder个人博客17 小时前
Linux6.19-ARM64 mm mmu子模块深入分析
大数据·linux·车载系统·系统架构·系统安全·鸿蒙系统
较劲男子汉19 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann