protocol buffers(protobuf)安装教程

2023-11-01

本文按照mac讲解protobuf的安装,windows上比较好安装按照mac的基本流程就可以安装成功,mac上的安装有的时候比较容易出现问题

一、通过brew的方式安装(仅Mac)

需要mac中存在brew,输入命令:brew --version 查看是否存在brew,如不存在就进行安装,安装方法直接百度即可。

1.安装protobuf命令:brew install protobuf

安装指定版本的protobuf命令:brew install protobuf@3.7

2.查看是否安装成功命令:protoc --version

user@C02FP58GML7H bin % protoc --version
libprotoc 3.20.1

3.卸载protobuf命令:brew uninstall protobuf

4.brew安装安装路径

  • 配置文件在:/usr/local/etc
  • 安装文件在:/usr/local/Cellar
  • 二进制可执行程序的软连接在:/usr/local/bin

注意:一般情况通过brew install安装应用最先是放在/usr/local/Cellar/目录下,有些应用会自动创建软链接放在/usr/bin或者/usr/sbin,同时也会将整个文件夹放在/usr/local,忘记的时候或者找不到的时候,可以使用brew list 软件名确定安装位置

二、源码编译方式安装(Mac、Linux)

1.从官方仓库地址下载protobuf-all-21.6.tar.gz(当前最新版)

2.解压到目的目录下:tar -zxvf protobuf-all-21.6.tar.gz

3.进入到解压后的源码目录下:cd protobuf-all-21.6

4.检测安装环境是否满足条件,生成Makefile:./configure --prefix=/usr/local/protobuf

5.经典的编译安装步骤:make && make install

6.添加环境变量:(Linux需要按照linux的方式配置环境变量)

cd ~

export PROTOBUF=/usr/local/protobuf

export PATH= P R O T O B U F / b i n : PROTOBUF/bin: PROTOBUF/bin:PATH

vim .bash_profile

source .bash_profile

7.查看是否安装成功命令:protoc --version

三、压缩包解压方式安装(适合Mac、Windows、Linux)

1.从官方仓库地址下载

2.解压到目的目录下

目录结构如下:

  • bin目录下的protoc是可执行文件
  • include目录下的是gogle定义的.protoc文件,我们使用的就是import "google/protobuf/timestamp.proto"
user@C02FP58GML7H protoc-3.20.1-osx-x86_64 % tree 
.
├── bin
│   └── protoc
├── include
│   └── google
│       └── protobuf
│           ├── any.proto
│           ├── api.proto
│           ├── compiler
│           │   └── plugin.proto
│           ├── descriptor.proto
│           ├── duration.proto
│           ├── empty.proto
│           ├── field_mask.proto
│           ├── source_context.proto
│           ├── struct.proto
│           ├── timestamp.proto
│           ├── type.proto
│           └── wrappers.proto
└── readme.txt
~/.bash_profile (一般在这个文件中添加用户级环境变量)

3.添加环境变量

Mac配置环境变量的地方:

  1. **/etc/profile(建议不修改这个文件):**全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
  2. **/etc/bashrc(一般在这个文件中添加系统级环境变量):**全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。
  3. **~/.bash_profile(一般在这个文件中添加用户级环境变量):**每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!
  4. **注意:**但有时在.bash_profile文件中的环境变量会无效

当mac中存在zsh,修改环境变量就要在**~/.zshrc**中修改,本教程就是在此文件中加入如下配置,=后面是文件加压后的路径,自行修改:

alias protoc=/Users/user/Desktop/workspace2/protoc-3.20.1-osx-x86_64/bin/protoc

刷新配置使修改立即生效,需要执行:

source ~/.zshrc

4.Linux中同理适用对应的修改添加环境变量的方法,然后刷新配置,修改方法百度即可

5.Windows中只需要在图形化的配置中加入环境变量即可,具体实现直接百度即可

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

protocol buffers(protobuf)安装教程 的相关文章

  • 为什么结构中“[0]byte”的位置很重要?

    0 byte在golang中不应该占用任何内存空间 但这两个结构体的大小不同 type bar2 struct A int 0 byte type bar3 struct 0 byte A int 那么为什么这个位置 0 byte这里重要吗
  • 如何解析 Content-Disposition 标头以检索文件名属性?

    使用 go 如何解析从 http HEAD 请求检索到的 Content Disposition 标头以获取文件的文件名 此外 如何从 http HEAD 响应中检索标头本身 这样的事情正确吗 resp err http Head http
  • 鸭子在 Go 中打字

    我想写一个Join函数接受任意对象String 方法 package main import fmt strings type myint int func i myint String string return fmt Sprintf
  • 匿名结构和空结构

    http play golang org p vhaKi5uVmm http play golang org p vhaKi5uVmm package main import fmt var battle make chan string
  • 模板中的 bson.ObjectId

    我有一个具有 bson ObjectId 类型的结构 例如如下所示 type Test struct Id bson ObjectId Name string Foo string 我想在 html 模板中呈现它 Name Food a h
  • GOMAXPROCS 默认值是多少?

    不设置同名环境变量时是否保证GOMAXPROCS设置为1 此代码显示的值 package main import runtime fmt func getGOMAXPROCS int return runtime GOMAXPROCS 0
  • 如何将 int[] 转换为 uint8[]

    所以 我需要你的帮助 我找不到关于该主题的任何内容 Golang 是一门刚刚诞生的语言 所以对于像我这样的新手来说很难快速找到答案 预先声明的 Goint类型大小是特定于实现的 32 位或 64 位 数字类型 http golang org
  • 如何同时使用 LoadHTMLGlob 和 LoadHTMLFiles

    我想要来自不同子目录的分隔符逻辑模板templates文件夹 下面是我的templates文件夹 templates authentication login gohtml logout gohtml index gohtml profil
  • 如何关闭 gorm 1.20.0 中的数据库实例

    由于我没有在 Close 函数中找到 gorm 实例 任何帮助将不胜感激 dbURI fmt Sprintf user s password s dbname s port s sslmode s TimeZone s username p
  • 在 Visual Studio Code 中调试 Go 测试

    在我的 Windows 计算机上 我安装了 Visual Studio Code 要手动运行测试 我进入控制台到项目文件夹并输入 go test main test go 它工作完美 但我遇到一种情况 我需要调试我的测试以了解发生了什么 为
  • select 语句是否保证通道选择的顺序?

    继从这个答案 https stackoverflow com a 25795236 274460 如果一个 goroutine 在两个通道上进行选择 是否保证通道的选择顺序与其发送的顺序相同 我对发送者是单线程的情况特别感兴趣 例如 是否保
  • 如何为所有 API 端点全局设置 http.ResponseWriter Content-Type 标头?

    我是 Go 新手 现在正在用它构建一个简单的 API package main import encoding json fmt github com gorilla mux github com gorilla handlers log
  • 如何读取大型平面文件

    我有一个平面文件 其中包含 339276 行文本 大小为 62 1 MB 我试图读入所有行 根据我所拥有的某些条件解析它们 然后将它们插入数据库 我最初尝试使用 bufio Scan 循环和 bufio Text 来获取该行 但缓冲区空间不
  • 为什么 gmail API 以纯文本形式发送 html 电子邮件?

    我正在尝试使用 gmail API 发送 html 电子邮件 但由于某些原因 它会随机以纯文本 文本形式发送电子邮件 谷歌似乎改变了我设置的内容类型标头 这有什么理由吗 电子邮件内容始终完全相同 正如我测试的那样 API 仍处于实验阶段吗
  • 是否可以在 C/C++ 中模仿 Go 接口?

    在 Go 中 如果类型具有接口定义的所有方法 则可以将其分配给该接口变量 而无需显式继承它 是否可以在 C C 中模仿此功能 是的 您可以使用纯抽象类 并使用模板类来包装 实现 抽象类的类型 以便它们扩展抽象类 这是一个简单的示例 incl
  • golang无法启动调试,显示未找到框架CoreFoundation

    我使用的是 Macbook pro m1 在数据迁移或更新到 monterey 后 不确定是什么原因导致的 golang 似乎无法调试或 go list 编译 我尝试重新安装 更新 golang 结果是一样的 Go版本 1 17 3 dar
  • Golang 结构体初始化

    有一个像这样的简单结构 type Event struct Id int Name string 这两种初始化方法有什么区别呢 e1 Event Id 1 Name event 1 e2 Event Id 2 Name event 2 为什
  • 有没有办法间歇性地执行重复性任务?

    有没有办法在 Go 中执行重复的后台任务 我在想类似的事情Timer schedule task delay period 在爪哇 我知道我可以用 goroutine 来做到这一点Time sleep 但我想要一些容易停止的东西 这是我得到
  • 关闭长度未知的通道

    当不了解频道时我无法关闭频道 length package main import fmt time func gen ch chan int var i int for time Sleep time Millisecond 10 ch
  • container_memory_working_set_bytes 与 process_resident_memory_bytes 和total_rss 之间的关系

    我希望了解以下关系 容器内存工作集字节 vs 进程驻留内存字节 vs 总计RSS 容器内存 rss 文件映射以便更好地配备OOM可能性警报系统 这似乎违背了我的理解 这让我现在感到困惑 如果容器 pod 运行单个进程 执行用 Go 编写的编

随机推荐

  • 最大上升序列Super Jumping! Jumping! Jumping!

    多组输入 第一个数代表有多少个数据 输入0结束 Sample Input 3 1 3 2 4 1 2 3 4 4 3 3 2 1 0 Sample Output 4 10 3 1到3最大 1到2到3到4最大 直接到三最大 include
  • 尚硅谷 Vue 2.0 + Vue 3.0 入门到精通教程学习笔记 (二)

    第二章 Vue 组件化编程 2 1 模块与组件 模块化与组件化 2 1 1 模块 1 理解 向外提供特定功能的 js 程序 一般就是一个 js 文件 2 为什么 js 文件很多很复杂 3 作用 复用 js 简化 js 的编写 提高 js 运
  • Qt 无边框、透明、可移动、的个性窗体

    原文地址 转载 Qt 无边框 透明 可移动 的个性窗体案例详解 作者 风贝 很多朋友都问透明的效果怎么做 为什么自己做的无边框窗体不可移动 一个个回答的很累 干脆写出来分享下好了 我只用代码说话 工程的main cpp int main i
  • python菜单栏_「每日一练」Python实现下拉和弹出式菜单

    用Python就一定要用到界面操作 有一个好的用户界面 才会有好的用户体验 下边就开始创建我们的主窗口 并实现下拉和弹出式菜单 案例 创建主窗口 并实现下拉和弹出式菜单 先上代码 运行效果 题目详述 第一行 import tkinter a
  • Jupyter notebook显示连接失败、服务器正忙

    pip install tornado 4 5 成功
  • # AutoLeaders控制组—51单片机学习笔记(LED控制、独立按键、数码管)

    51单片机 1 单片机基础 1 1 内部构成 CPU RAM ROM 定时器 中断系统 通讯接口等 相当于袖珍版计算机 一个芯片能构成完整的计算机系统 1 2 51单片机 公司 STC公司 位数 8位 RAM 512字节 第二天丢失 相当于
  • HashMap底层源码分析

    HashMap HashMap 是一个散列表 它存储的内容是键值对 key value 映射 HashMap是非线程安全的 实现了 Map 接口 根据键的 HashCode 值存储数据 具有很快的访问速度 最多允许一条记录的键为 null
  • 编译原理期末习题考试复习题目(重点三)

    编译原理期末习题考试复习题目 重点三 目录 编译原理期末习题考试复习题目 重点三 三 判断题 四 简答题 三 判断题 下列各题 你认为正确的 请在题干的括号内打 错的打 1 计算机高级语言翻译成低级语言只有解释一种方式 X 2 在编译中进行
  • CMOS图像传感器——pipeline像素控制

    一 传统像素操作 传统CMOS图像传感器的芯片架构中 像素的控制信号从水平方向驱动 像素的源极跟随器输出电压垂直地输出到位于顶部和底部的模拟前端读出电路 其具体实现方式如下图所示 其中RST TX和SEL是像素水平控制信号 像素输出电压PI
  • CMake中aux_source_directory的使用

    CMake中的aux source directory命令用于查找目录中的所有源文件 其格式如下 aux source directory
  • 新手如何有效的刷算法题(LeetCode)

    点击关注上方 五分钟学算法 设为 置顶或星标 第一时间送达干货 来源 五分钟学算法 前言 作为一名非科班出身的程序员 我是参加工作之后才开始接触算法 学算法至今有将近五年的时间 期间输出文字约 100 多万 从算法小白到写出百万阅读的算法文
  • python3 mmh3安装及使用

    mmh3安装方法 哈希方法主要有MD SHA Murmur CityHash MAC等几种方法 mmh3全程murmurhash3 是一种非加密的哈希算法 常用于hadoop等分布式存储情境中 在anaconda中安装使用命令 pip in
  • 【项目实战】AOSP源码阅读与目录结构

    一 背景 随着Android系统的不断发展 了解其内部实现和架构变得越来越重要 AOSP Android Open Source Project 是Android的开放源代码项目 为开发者提供了详细的源代码和工具 使得我们能够深入了解And
  • 【2023年电赛】运动目标控制与自动追踪系统(E 题)最简单实现

    本方案的思路是最简单的不涉及复杂算法 识别矩形框 标记矩形框 输出坐标和中心点 计算长度 控制舵机移动固定长度 仅供完成基础功能参考 不喜勿喷 实现运动目标控制与自动追踪系统 任务概述 本文将介绍如何使用OpenMV开发板和舵机构建一个运动
  • I/O,文件操作,File类

    前言 小亭子正在努力的学习编程 接下来将开启javaEE的学习 分享的文章都是学习的笔记和感悟 如有不妥之处希望大佬们批评指正 同时如果本文对你有帮助的话 烦请点赞关注支持一波 感激不尽 目录 前言 前驱知识 文件 目录 文件路径 Path
  • 阿里短信服务集成

    技术分享交流群 1125844267 大家可以进来唠嗑闲聊 前言 目前阿里短信不支持个人申请签名和模板 所以只能使用测试版固定的签名和模板 提示 以下是本篇文章正文内容 下面案例可供参考 一 控制台配置 1 进入阿里云官网 搜索 短信服务
  • Hyperledger Fabric全面理解

    Fabric结构 Fabric结构 Fabric 0 6的特点 结构简单 应用 成员管理 Peer的三角形关系 主要业务功能全部集中于Peer节点 架构问题 由于peer节点承担了太多的功能 所以带来扩展性 可维护性 安全性 业务隔离等方面
  • scanf和printf介绍

    1 scanf scanf函数是C语言中标准库中的输入函数 其主要作用是从标准输入设备 如键盘 获取输入数据 并将读取的数据存储到指定的变量中 其基本用法如下 读取整型数据 int num scanf d num 从标准输入读取一个整数 并
  • 使用Windows PowerShell 连接远程服务器

    1 使用管理员权限启动Windows PowerShell 2 在控制台中使用SSH指令 ssh usrname ip 更多ssh用法参照如下 PS C WINDOWS system32 gt ssh help unknown option
  • protocol buffers(protobuf)安装教程

    本文按照mac讲解protobuf的安装 windows上比较好安装按照mac的基本流程就可以安装成功 mac上的安装有的时候比较容易出现问题 一 通过brew的方式安装 仅Mac 需要mac中存在brew 输入命令 brew versio