当前位置: 首页 > news >正文

Linux下protobuf和 protobuf-c安装使用

如果在 C语言中使用 protobuf,就需要使用 protobuf-c这个库。

protobuf使用详解:https://blog.csdn.net/qq_42402854/article/details/134066566

下面在 Linux下安装 protobuf和 protobuf-c。

一、下载 protobuf和 protobuf-c

官方的 Protocol Buffer提供了C++、C#、Dart、Go、Java、Kotlin和Python语言的支持。但是不包括C语言。

  1. protoc命令通过 *.proto文件生成支持语言的代码。
  2. protobuf不同语言的库用于代码最终调用时使用

对于 C语言版本的protobuf-c,只针对C语言做了实现。

  1. protoc-c命令通过 *.proto文件生成对应 C语言的代码(.pb-c.h和.pb-c.c文件),以便在C语言中使用。
  2. libprotobuf-c库用于编译时连接使用。

protobuf下载地址:https://github.com/protocolbuffers/protobuf/releases
protobuf-c下载地址:https://github.com/protobuf-c/protobuf-c/releases

本次下载以 3.19.6版本为例,根据自己需求下载即可。将下载后的压缩包解压到合适的位置。

[root@centos7 protobuf]# pwd
/usr/local/protobuf
# 解压
[root@centos7 protobuf]# tar -zxvf  protobuf-all-3.19.6.tar.gz
[root@centos7 protobuf]# tar -zxvf  protobuf-c-1.4.1.tar.gz
[root@centos7 protobuf]# ll
总用量 8076
drwxr-xr-x 18 690013 89939    4096 930 2022 protobuf-3.19.6
-rw-r--r--  1 root   root  7747455 1017 22:35 protobuf-all-3.19.6.tar.gz
drwxr-xr-x  8 lisi   lisi      312 711 2022 protobuf-c-1.4.1
-rw-r--r--  1 root   root   513596 1017 22:35 protobuf-c-1.4.1.tar.gz

二、Linux下安装

1、安装 protobuf

# 1. 编译安装protobuf
[root@centos7 protobuf]# cd /usr/local/protobuf/protobuf-3.19.6
[root@centos7 protobuf-3.19.6]# ./configure --prefix=/usr/local/protobuf/protobuf-3.19.6/
[root@centos7 protobuf-3.19.6]# make
[root@centos7 protobuf-3.19.6]# make install# 2. 添加环境变量
[root@centos7 protobuf-3.19.6]# cd ~
[root@centos7 ~]# vim .bashrc
# 添加这两行
export PATH="$PATH:/usr/local/protobuf/protobuf-3.19.6/bin"
export PKG_CONFIG_PATH=/usr/local/protobuf/protobuf-3.19.6/lib/pkgconfig
# 使之生效
[root@centos7 ~]# source .bashrc# 3. 检查是否安装成功,查看版本信息。
[root@centos7 ~]# protoc --version
libprotoc 3.19.6

编译安装时间有有点长,请耐心等待。

2、安装 protobuf-c

# 1. 编译安装protobuf-c
[root@centos7 ~]# cd /usr/local/protobuf/protobuf-c-1.4.1
[root@centos7 protobuf-c-1.4.1]# ./configure --prefix=/usr/local/protobuf/protobuf-c-1.4.1
[root@centos7 protobuf-c-1.4.1]# make
[root@centos7 protobuf-c-1.4.1]# make install# 2. 添加环境变量
[root@centos7 protobuf-c-1.4.1]# cd ~
[root@centos7 ~]# vim .bashrc
# 添加这一行
export PATH="$PATH:/usr/local/protobuf/protobuf-c-1.4.1/bin"
# 使之生效
[root@centos7 ~]# source .bashrc# 3. 检查是否安装成功,查看版本信息。
[root@centos7 ~]# protoc-c --version
protobuf-c 1.4.1
libprotoc 3.19.6

在这里插入图片描述

三、生成 C语言文件

可以使用 protoc-c命令通过 *.proto文件生成C语言的 .pb-c.h和.pb-c.c文件。

命令:protoc-c --c_cout=. ./*.proto

[root@centos7 ~]# mkdir -p /usr/local/protobuf/gen-proto
[root@centos7 ~]# cd /usr/local/protobuf/gen-proto
[root@centos7 gen-proto]# vi User.proto
[root@centos7 gen-proto]# cat User.proto
syntax = "proto3";message User {int32  sex = 1;string name = 2;}
[root@centos7 gen-proto]# protoc-c --c_out=. ./User.proto
[root@centos7 gen-proto]# ll
总用量 12
-rw-r--r-- 1 root root 2785 1027 23:02 User.pb-c.c
-rw-r--r-- 1 root root 1947 1027 23:02 User.pb-c.h
-rw-r--r-- 1 root root   76 1027 23:01 User.proto

– 求知若饥,虚心若愚。

相关文章:

  • IP地址与代理ip在网络安全中的关键作用
  • Autojs 利用OpenCV识别棋子之天天象棋你马没了
  • Spigot 通过 BuildTools 构建 MineCraft Spigot 官方服务端文件
  • 代码随想录算法训练营第3天| 203.移除链表元素 、 707.设计链表 、 206.反转链表
  • 【Acwing167】木棒(dfs+剪枝)超级详细题解!
  • 【数据库】组合查询 UNION
  • Spring Cloud之微服务
  • 微信小程序笔记功能(富文本editor功能)开发
  • 一文拿捏内网穿透利器之frp(反向代理软件相关)
  • Hadoop3.0大数据处理学习3(MapReduce原理分析、日志归集、序列化机制、Yarn资源调度器)
  • Kafka - 深入了解Kafka基础架构:Kafka的基本概念
  • ios ipa包上传需要什么工具
  • uniapp实现公众号微信登录
  • 基于 51 的点阵屏显示·16*16 点阵仿真实验(静态显示,左移显示)
  • 【QT】Qt控件不显示图标
  • 《剑指offer》分解让复杂问题更简单
  • CAP理论的例子讲解
  • CentOS 7 修改主机名
  • express.js的介绍及使用
  • Iterator 和 for...of 循环
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java多态
  • jquery ajax学习笔记
  • QQ浏览器x5内核的兼容性问题
  • React中的“虫洞”——Context
  • Theano - 导数
  • 阿里云前端周刊 - 第 26 期
  • 创建一种深思熟虑的文化
  • 构造函数(constructor)与原型链(prototype)关系
  • 回顾2016
  • 开源地图数据可视化库——mapnik
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端知识点整理(待续)
  • 设计模式走一遍---观察者模式
  • 突破自己的技术思维
  • 学习笔记TF060:图像语音结合,看图说话
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​secrets --- 生成管理密码的安全随机数​
  • "无招胜有招"nbsp;史上最全的互…
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • $ git push -u origin master 推送到远程库出错
  • $(function(){})与(function($){....})(jQuery)的区别
  • (3)STL算法之搜索
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (五)网络优化与超参数选择--九五小庞
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .aanva
  • .form文件_一篇文章学会文件上传
  • .md即markdown文件的基本常用编写语法