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
相关推荐
vibecode2 小时前
网站服务器失去响应怎么解决?我把连接超时和读超时这两段计时拆开跑了一遍
运维·服务器
工业一体机老司机3 小时前
Docker部署工控机采集服务 Compose编排与开机自启
运维·docker·容器
迪康Defender4 小时前
终端供应链安全:应用白名单与软件正版化检测落地|终端安全治理实践
运维·服务器·网络·安全·web安全·自动化·运维开发
lzx_0024 小时前
Linux 进程(二) 深入理解进程
linux
沫璃染墨4 小时前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
温暖小土4 小时前
在 CentOS 上安装 Redis Stack
linux·redis·centos
GeW6 小时前
国产化替代进入深水区之后Linux 与数据库为什么必须走向重建
linux
万联WANFLOW7 小时前
异地厂区视频监控远程运维:从组网到安全的实施要点
运维·网络·安全·企业组网·sdwan
十碗饭吃不饱7 小时前
SSH 密钥认证详解:原理、实操、参数、排错与加固
运维·ssh
echoarts8 小时前
服务器连不上?FileZilla 改被动模式就好了
运维·服务器·其他