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

MacM1(ARM)安装Protocol Buffers

MacM1(ARM)安装Protocol Buffers

本文目录

    • MacM1(ARM)安装Protocol Buffers
      • 3.21之前版本安装使用configure
      • 3.22之后版本安装使用cmake
      • 使用编译后的版本

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

在运行./autogen.sh./configure命令时出现"No such file or directory"错误,是因为protobuf版本或构建方式的问题

3.21之前版本安装使用configure

如果没有configure需要先运行./autogen.sh生成

  • 配置

    ./configure
    // ./configure --prefix=/Users/xxx/protobuf(prefix 为安装目录,可自定义)
    
  • 编译和安装

    make
    
    sudo make install
    
  • 验证安装

    protoc --version
    libprotoc 3.21.12
    
  • 安装位置

    which protoc
    /usr/local/bin/protoc
    
  • 配置环境变量

    vim ~/.zshrcexport PROTOBUF=/usr/local/bin/protoc
    export PATH=$PROTOBUF/bin:$PATHsource ~/.zshrc
    

3.22之后版本安装使用cmake

  • 运行CMake配置

    cmake .
    
  • 报错,缺少 Abseil

    CMake Error at third_party/utf8_range/CMakeLists.txt:31 (add_subdirectory):The source directory/xxx/protobuf-25.0/third_party/abseil-cppdoes not contain a CMakeLists.txt file.
    

    https://github.com/protocolbuffers/protobuf/issues/12016

    查看官方解释:cmake/README.md,需要下载Abseil

  • abseil-cpp下载
    官方github:https://github.com/abseil/abseil-cpp/releases
    单独安装:https://abseil.io/docs/cpp/quickstart-cmake#getting-the-abseil-code

  • 将abseil-cpp内容放入/third_party/abseil-cpp/目录下即可,不需要单独安装

  • 在源码路径下开始编译

    cmake . -DCMAKE_CXX_STANDARD=14// -Dprotobuf_BUILD_TESTS=OFF //配置CMake以跳过测试构建
    
    cmake --build .
    

    可以看到当前目录下已经可以查看编译完的protoc的版本了

  • 安装

    sudo make install
    
  • 查看安装位置和全局版本

    which protocprotoc --version
    

使用编译后的版本

不需要编译,直接使用,参考:https://grpc.io/docs/protoc-installation/

  • 选择对应平台下载 protoc-<version>-<os>-<arch>.zip

  • 解压

  • 命令行查看

    cd /Users/xx/protoc-25.0-osx-aarch_64/bin./protoc --version
    libprotoc 25.0
    

将这个包放入自定义文件夹,设置环境变量即可

相关文章:

MacM1(ARM)安装Protocol Buffers

MacM1(ARM)安装Protocol Buffers 本文目录 MacM1(ARM)安装Protocol Buffers3.21之前版本安装使用configure3.22之后版本安装使用cmake使用编译后的版本 protobuf下载地址&#xff1a;https://github.com/protocolbuffers/protobuf/releases 在运行./autogen.sh或./configure命…...

使用C++从0到1实现人工智能神经网络及实战案例

引言 既然是要用C来实现&#xff0c;那么我们自然而然的想到设计一个神经网络类来表示神经网络&#xff0c;这里我称之为Net类。由于这个类名太过普遍&#xff0c;很有可能跟其他人写的程序冲突&#xff0c;所以我的所有程序都包含在namespace liu中&#xff0c;由此不难想到我…...

React Router

一、简介 react router是一个构建基于react应用的路由管理库。允许你在程序中定义不同的路由和导航规则。以实现不同的url路径显示不同的组件。 二、相关技术 <Router><div><ul id "menu"><li><Link to "/home">Home<…...

https 是否真的安全,https攻击该如何防护,https可以被抓包吗?如何防止呢?

首先解释一下什么是HTPPS 简单来说&#xff0c; https 是 http ssl&#xff0c;对 http 通信内容进行加密&#xff0c;是HTTP的安全版&#xff0c;是使用TLS/SSL加密的HTTP协议 Https的作用&#xff1a; 内容加密 建立一个信息安全通道&#xff0c;来保证数据传输的安全&am…...

C++中声明友元

C中声明友元 不能从外部访问类的私有数据成员和方法&#xff0c;但这条规则不适用于友元类和友元函数。要声明友元 类或友元函数&#xff0c;可使用关键字 friend&#xff0c;如以下示例程序所示&#xff1a; 使用关键字 friend 让外部函数 DisplayAge( )能够访问私有数据成员…...

【GPT-3.5】通过python调用ChatGPT API与ChatGPT对话交流

文章目录 一、引言二、AIGC简介三、OpenAI介绍四、GPT-3.5介绍五、获得OpenAI API Key六、调用ChatGPT API实现与ChatGPT对话七、参考链接 一、引言 ChatGPT 的火爆&#xff0c;成功带火了AIGC&#xff0c;让它进入大众的视野。 ChatGPT 和Whisper API 开发者现在可以通过API将…...

Vatee万腾的科技探险:vatee数字化力量的前瞻征途

在Vatee万腾的科技探险中&#xff0c;我们领略到了一场数字化力量的前瞻征途&#xff0c;这是一次引领未来的创新之旅。Vatee万腾以其独特的科技理念和数字化力量&#xff0c;开启了一次引领行业的前瞻性征途&#xff0c;为数字化未来描绘出了崭新的篇章。 Vatee万腾的数字化力…...

github使用token认证

向github提交代码时报错&#xff1a;Support for password authentication was removed on August 13, 2021. Please use a personal access token instead。大概意思就是&#xff0c;原先的密码凭证从2021年8月13日开始就不能用了&#xff0c;后续必须使用个人访问令牌&#x…...

基于C#实现线段树

一、线段树 线段树又称"区间树”&#xff0c;在每个节点上保存一个区间&#xff0c;当然区间的划分采用折半的思想&#xff0c;叶子节点只保存一个值&#xff0c;也叫单元节点&#xff0c;所以最终的构造就是一个平衡的二叉树&#xff0c;拥有 CURD 的 O(lgN)的时间。 从…...

AI智能客服搭建教程附带免费源码

*名称* *版本要求* 服务器 CPU 2核心 ↑运存 4G ↑宽带 5M ↑ 服务器操作系统 Linux Centos7 运行环境 Nginx 1.18 PHP 7.3 MYSQL 5.6 服务器配置及环境要求 PHP设置 一、安装PHP扩展插件:fileinfo、redis、 sg11 二、删除PHP对应版本中的 pcntl_signal 、pcntl_signal_dis…...

Shell脚本:Linux Shell脚本学习指南(第三部分Shell高级)四

十九、Linux Shell trap命令&#xff1a;捕获信号 到目前为止&#xff0c;我们在本教程所见的脚本中还没有需要信号处理功能的&#xff0c;因为它们的内容相对比较简单&#xff0c;执行时间很短&#xff0c;而且不会创建临时文件。而对于较大的或者更复杂的脚本来说&#xff0…...

牛气霸屏-快抖云推独立版V1.6.7

介绍 快抖云推全插件独立版是最近很火的牛气霸屏系统独立版&#xff0c;牛气霸屏系统就是商家通过系统在线创建抖音或快手霸屏活动&#xff0c;并生成该活动的爆客二维码&#xff0c;用户通过扫二维码即可参加活动&#xff08;活动可以是领取卡劵&#xff0c;抽奖等&#xff0…...

ffmpeg下载与配置环境变量

FFmpeg 是一个强大的多媒体框架&#xff0c;可以让用户处理和操纵音频和视频文件。具有易于使用的界面&#xff0c;用户可以在 Windows、Mac 或 Linux Ubuntu 系统上下载 FFmpeg 并将其提取到文件夹中。然后&#xff0c;该软件可以加入 PATH 环境变量中就可以快捷的使用软件了.…...

那些年,关于CKACKS认证的那些事儿?

前言 遥想2020年的年初&#xff0c;疫情封城封村之际&#xff0c;工作之余在B站将尚硅谷的linux中的k8s视频完整系统的学习了一遍&#xff0c;自此像是打通了任督二脉一般&#xff0c;开启了对k8s的探索之旅&#xff0c;一路也是磕磕绊绊的在工作中使用k8s。 终于在23年的6月仲…...

chromium通信系统-mojo系统(一)-ipcz系统代码实现-同Node通信

在chromium通信系统-mojo系统(一)-ipcz系统基本概念一文中我们介绍了ipcz的基本概念。 本章我们来通过代码分析它的实现。 handle系统 为了不对上层api暴露太多细节&#xff0c;实现解耦&#xff0c;也方便于传输&#xff0c;ipcz系统使用handle表示一个对象&#xff0c;hand…...

电路 buck-boost相关知识

BUCK-BOOST 文章目录 BUCK-BOOST前言一、DC-DC工作模式电容电感特性伏秒积平衡原理 二、BUCK电路三、BOOST电路四、BUCK-BOOST电路总结 前言 最近需要用到buck-boost相关的电路知识&#xff0c;于是便写下这篇文章复习一下。 一、DC-DC 在学习buck-boost电路之前我们先来看一…...

音频——S/PDIF

文章目录 BMC 编码字帧(sub-frame)格式帧(frame)格式参考S/PDIF 是 SONY 和 Philips 公司共同规定的数字信号传输规范,其实就是在 AES/EBU 上进行改动的家用版本。IEC60958 的标准规范囊括了以上两个规范。spdif 采用了双相符号编码(BMC),是将时钟信号和数据信号混合在一起…...

100篇带你入门——嵌入式系统中的程序调试方法

好久不见&#xff0c;最近小猿有点忙&#xff0c;才有时间给大家写文章。今天给大家讲一下在我们单片机开发都用哪些调试工具和调试方法&#xff0c;内容不完善的话&#xff0c;欢迎大家一起交流。 当涉及到嵌入式系统的程序调试时&#xff0c;选择正确的工具和方法是确保系统功…...

【Spring】Spring事务失效问题

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;2022年度博客之星全国TOP3&#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化&#xff0c;文章内容兼具广度、深度、大厂技术方案&#xff0c;对待技术喜欢推理加验证&#xff0c;就职于…...

WiFi 发射链路 MCS 自适应机制介绍

链路适配是指发射机选择最优的MCS向特定的接收机发送数据的过程。链路自适应算法的实现有其特殊性&#xff0c;但通常基于测量的数据包错误率(PER)。大多数算法监视PER并调整MCS以跟踪一个最佳的长期平均值&#xff0c;以平衡由于使用更高MCS发送更短数据包而减少的开销和由于更…...

告别依赖冲突!Miniconda-Python3.9新手快速部署指南

告别依赖冲突&#xff01;Miniconda-Python3.9新手快速部署指南 1. 为什么你需要Miniconda&#xff1f; 你是否遇到过这样的情况&#xff1a;昨天还能运行的代码&#xff0c;今天突然报错"ModuleNotFoundError"&#xff1f;或者团队中有人能跑通的项目&#xff0c;…...

Notepad++效率倍增:集成Phi-4-mini-reasoning的代码片段智能生成

Notepad效率倍增&#xff1a;集成Phi-4-mini-reasoning的代码片段智能生成 1. 为什么Notepad需要AI加持&#xff1f; 作为一款轻量级代码编辑器&#xff0c;Notepad凭借其快速启动和简洁界面赢得了全球开发者的喜爱。但面对日益复杂的开发需求&#xff0c;传统编辑器在智能辅…...

gitru:一个由 Rust 打造的零依赖 Git 提交信息校验工具芯

一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储&#xff0c;而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码&#xff0c;常规方式只能重新配置连接&#xff0c;效率极低。本项目只作为学习研究使用&#xff0c;不做其他…...

需求管理中的需求分析优先级排序与变更控制

需求管理是软件开发与项目管理中的核心环节&#xff0c;而需求分析优先级排序与变更控制则是确保项目成功的关键。在资源有限、时间紧迫的情况下&#xff0c;合理分配需求优先级能够有效提升交付效率&#xff1b;严格的变更控制机制能避免需求蔓延导致的项目失控。本文将围绕这…...

【Unity】Addressables插件实战:从零构建高效资源热更新方案

1. 为什么需要Addressables资源热更新 第一次接触Unity资源管理时&#xff0c;我像大多数新手一样直接使用Resources.Load。直到项目需要热更新时&#xff0c;才发现Resources文件夹下的所有内容都会被打进安装包&#xff0c;而且无法动态更新。后来改用AssetBundle&#xff0c…...

数据库设计思考

数据库设计思考&#xff1a;构建高效数据系统的核心逻辑 在数字化时代&#xff0c;数据库作为信息存储与管理的核心&#xff0c;其设计质量直接影响系统的性能、扩展性和安全性。无论是大型企业级应用还是小型业务系统&#xff0c;合理的数据库设计都能显著提升数据操作的效率…...

别再只传整数了!手把手教你用AXI4-Lite在ZYNQ里搞定浮点数传输(附完整Vivado工程)

别再只传整数了&#xff01;手把手教你用AXI4-Lite在ZYNQ里搞定浮点数传输&#xff08;附完整Vivado工程&#xff09; 在ZYNQ的软硬件协同开发中&#xff0c;数据交互是最基础却最容易踩坑的环节。许多开发者习惯性地使用整型数据进行PS与PL间的通信&#xff0c;直到某天需要传…...

该系统通过AI技术对30%重复率的论文进行智能修正,结合深度学习提升语言表达的独特性

嘿&#xff0c;大家好&#xff01;我是AI菌。今天咱们来聊聊一个让无数学生头疼的问题&#xff1a;论文重复率飙到30%以上怎么办&#xff1f;别慌&#xff0c;我这就分享5个实用降重技巧&#xff0c;帮你一次搞定&#xff0c;轻松压到合格线以下。这些方法都是我亲身试验过的&a…...

磁珠在电源端必须加电容?一个容易被忽略的EMI设计细节与避坑指南

磁珠在电源端必须加电容&#xff1f;一个容易被忽略的EMI设计细节与避坑指南 在高速电路设计中&#xff0c;电磁干扰&#xff08;EMI&#xff09;问题往往成为工程师的噩梦。特别是当电路板上集成了Camera模块、RF收发器或其他敏感模拟电路时&#xff0c;电源线上的噪声就像隐形…...

ComfyUI面部修复FaceDetailer参数调优实战

1. FaceDetailer核心参数解析与实战调优 第一次接触ComfyUI的FaceDetailer时&#xff0c;我被它密密麻麻的参数面板吓了一跳。但经过三个月的实际项目打磨&#xff0c;我发现只要掌握几个关键参数&#xff0c;就能让面部修复效果立竿见影。先来看最影响效果的四个核心参数&…...