Ubuntu安装Protobuf

以前的版本中,有./configure,所以参照下面的博客链接

Ubuntu安装Protobuf,指定版本_ubuntu更新protobuf-CSDN博客

后来的版本中,没有了./configure文件,需要安装bazel,参照下面的官网链接

protobuf/src/README.md at main · protocolbuffers/protobuf · GitHub

执行下面命令

bazel build :protoc :protobuf
cp bazel-bin/protoc /usr/local/bin

这样Protobuf就安装成功了

2024.06.07

---------------------------------------------------------------------------------------------

上面的这个步骤可以用命令(protoc --version)显示出,protoc的版本,但好像并没有编译,导致在arm版本的tensorflow lite 库编译时频繁出现以下错误

把protobuf/src/google/protobuf文件夹拷贝到usr/local/include/google下面,又会出现连锁问题,如在runtime_verison.h文件中找不到一些文件。

基于以上问题,猜想是不是需要指定一个环境变量或者说安装一个google 的什么库,来解决这样的一个连锁的问题。搜索到一下issue

fatal error: google/protobuf/message.h: No such file or directory · Issue #642 · OpenAtomFoundation/pika · GitHub

猜想可能是我没有编译,导致出现了连锁问题,于是百度搜索protobuf编译,搜到下面一个博客

Hello! protobuf——编译与安装(c++版)_protobuf编译安装-CSDN博客

执行到cmake -G的时候执行不了,然后用百度AI的方法执行成功了

执行cmake -G "Unix Makefiles"

执行cmake --build.

执行sudo make install

然后我再看usr/local/include/google下的protobuf文件夹,确实发生了更新

可能这次应该在编译protobuf的相关文件时,不会再出现问题。

这次成功了,中间也没有再次报错。

以前的错误类型

1、

加上-DABSL_PROPAGATE_CXX_STD=ON

2、

"aarch64-oe" is not supported in cpuinfo.

通过搜索处理器架构的一些知识

----------处理器架构的一些知识------------------

X86和ARM是两种主要的CPU架构,而X86架构的CPU是PC服务器行业的老大,ARM架构的CPU则是移动端的老大。

x64,也被称为 AMD64 或 Intel 64,是对经典的 32 位 x86 指令集架构(ISA)的扩展。这种架构最初由 AMD 开发,并迅速被 Intel 采纳,其主要目的是允许计算机处理更大的内存空间(超过 4GB),同时保持对旧 x86 应用程序的兼容性。x64 架构支持的是 64 位计算,这意味着它可以使用更宽的数据通道和更大的寄存器,这对于提高数据处理能力和运行复杂的应用程序非常重要。


arm64,亦称为 AArch64,是 ARM 架构的 64 位版本,由 ARM Holdings 设计。它用于 ARM 的 v8-A 架构中,标志着从 32 位转向 64 位处理能力的重大转变。arm64 架构特别注重能效比,这使得它在移动设备、嵌入式系统以及越来越多的服务器和桌面平台上变得非常受欢迎。与 x64 相比,arm64 提供了更高的能源效率和成本效益,部分原因是其精简指令集(RISC),这种设计减少了每条指令的复杂度,使得硬件实现更为简单。

https://zhuanlan.zhihu.com/p/658199487

arm vs AArch64 vs amd64 vs x86_64 vs x86:有什么区别?


AArch64和ARM64都是指同一个处理器架构,只是名称不同,来源也不同。

AMD64和x86_64基本上是同一个东西。

-------------------------------------------------------------------

通过对处理器架构知识的搜索了解,我觉得aarch64-oe可能是aarch64的一个变种,但是最终规则还是得按照aarch64来。

基于上述判断,把/home/user/build_tflite_cc/cpuinfo/CMakeLists.txt中所有的aarch64的地方,都添加|aarch64-oe,目的是把aarch64-oe让编译器识别成aarch64进行编译。

这样操作后,先cmake.....,后make -j8,成功生成了libtensorflow-lite.so文件,但是在make的71%处出现了一个错误。

这上面的意思是说protobuf的版本低,更新版本后

始终会在编译百分之六七十的地方出现错误。有的时候,可以make -j8到100%,但是也是有错误的,如下:

有的时候可以生成libtensorflow-lite.so,但也是有错误的。

一些思考:

1、上面编译的libtensorflow-lite.so是错误的,下面图示是正确的文件

从上面可以看出,libtensorflow-lite.so的文件大小确实有差异,不成功的时候libtensorflow-lite.so的大小是109791k,成功的时候libtensorflow-lite.so的大小是160679k,生成成功时libtensorflow-lite.so的文件大小比不成功时大。

2、protoc的版本问题

我安装protoc的时候,版本是libprotoc 27.0-dev

我编译之后就变成了,libprotoc 3.21.9,这个还不知道为啥

3、编译tensorflow lite 库时,编译protobuf库之后,一些提示信息消失了

在没有编译protobuf库之前,编译tensorflow lite 库,还会出现上面一些白色字体的提醒,但是编译protobuf库之后,一些白色字体的提醒就没有了,如下图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26441.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Redis 实现分布式缓存

一、单节点 Redis 的问题 1.1 存在的问题 1、数据丢失问题:Redis 是内存存储,服务重启可能会丢失数据。 2、并发能力问题:单节点 Redis 并发能力虽然不错,但也无法满足如 618 这样的高并发场景。 3、故障恢复问题:如果…

实践分享:鸿蒙跨平台开发实例

先来理解什么是跨平台 提到跨平台,要先理解什么是“平台”,这里的平台,就是指应用程序的运行环境,例如操作系统,或者是Web浏览器,具体的像HarmonyOS、Android、iOS、或者浏览器,都可以叫做平台…

用于云医疗图像的缩略图保持加密方案

论文标题:《Data hiding with thumbnail-preserving encryption for cloud medical images》,作者提出了一种用于云医疗图像的可逆数据隐藏方案,同时保留了缩略图。下面是论文的创新点和算法过程的总结。 一、缩略图保持加密与传统图像加密 …

GD32 MCU超频后无法再次下载程序的解决办法

我们知道,MCU的系统时钟主频就相当于人的心跳或脉搏,为所有的工作单元提供时间基数,所以一般在程序最开始的地方都需要进行主频配置。 GD32固件库中提供了多种宏定义,可以很方便的将系统时钟配置为想要的频率。 GD32固件库中所用…

AI宣传文案软件有哪些?5款AI软件推荐

AI宣传文案软件有哪些?AI宣传文案软件在现代营销和创意产业中扮演着越来越重要的角色,它们凭借先进的自然语言处理、机器学习和深度学习技术,不仅解放了创作者的双手,还大大提升了文案的生成效率和质量。这些软件能够精准捕捉用户…

python快速入门之Flask框架

文章目录 一、pip安装二、接口开发三、测试 一、pip安装 pip install flask 二、接口开发 from flask import Flaskapp Flask(__name__)app.route("/test") def index():return "test"if __name__ __main__:app.run()三、测试 http://127.0.0.1:5000…

redis 08 慢查询日志

1.什么是慢查询日志 2.慢查询和两个参数有关 2.1 2.2 3.例子: 4 参数详细介绍:

ICRA 2024:基于视觉触觉传感器的物体表⾯分类的Sim2Real双层适应⽅法

⼈们通常通过视觉来感知物体表⾯的性质,但有时需要通过触觉信息来补充或替代视觉信息。在机器⼈感知物体属性⽅⾯,基于视觉的触觉传感器是⽬前的最新技术,因为它们可以产⽣与表⾯接触的⾼分辨率 RGB 触觉图像。然⽽,这些图像需要⼤…

如何通过亚马逊测评提升产品竞争力的关键策略

在亚马逊这个全球领先的跨境电商平台上,随着卖家数量的激增,产品间的竞争愈发激烈,为了在市场中脱颖而出,提高产品的竞争力成为了每位卖家必须面对的问题,而在这其中,亚马逊测评作为一种有效的市场策略&…

STM32项目分享:车牌号识别系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.…

python数据分析-房价数据集聚类分析

一、研究背景和意义 随着房地产市场的快速发展,房价数据成为了人们关注的焦点。了解房价的分布特征、影响因素以及不同区域之间的差异对于购房者、房地产开发商、政府部门等都具有重要的意义。通过对房价数据的聚类分析,可以深入了解房价的内在结构和规…

Flutter 简化线程Isolate的使用

文章目录 前言一、完整代码二、使用示例1、通过lambda启动线程2、获取线程返回值3、线程通信4、结束isolate 总结 前言 flutter的线程是数据独立的,每个线程一般通过sendport来传输数据,这样使得线程调用没那么方便,本文将提供一种支持lambd…

音频处理1_基本概念

AI变声和音乐创作的基础 声音本质上是人类可察觉范围内的气压周期性波动, 即声波 声波是一种连续信号,在任意时间内的声音信号有无数个取值。对于只能读取有限长数组计算机来说,我们需要将连续的声音信号转换为一个离散的序列,即数字化表示。…

法考报名必看,99%高过审率证件照片电子版制作技巧

在2024年,法考备战已经如火如荼进行中,作为进入法律行业的第一步,参加法考的重要性不言而喻。而作为报名过程中必不可少的一环,报名照片要求以及证件照制作技巧更是需要我们特别重视的部分。想要在这个过程中顺利通过审核&#xf…

【全开源】图书借阅管理系统源码(ThinkPHP+FastAdmin)

📚图书借阅管理系统:打造你的私人图书馆 一款基于ThinkPHPFastAdmin开发的简易图书借阅管理系统,一款轻量级的图书借阅管理系统,具有会员管理,图书管理,借阅及归还管理,会员充值等基本功能&…

使用 PNPM 从 0 搭建 monorepo,测试并发布

1 目标 通过 PNPM 创建一个 monorepo(多个项目在一个代码仓库)项目,形成一个通用的仓库模板。 这个仓库既可以用于公司存放和管理所有的项目,也可以用于将个人班余的所有积累整合其中。 这里以在 monorepo 项目中搭建 web compon…

x64-linux下在vscode使用vcpkg

1.使用vscode远程连接上对应的linux ,或者直接在图形化界面上使用。 2.安装vcpkg 插件,然后打开插件设置。 注意:defalut和host的主机一定和你自己的主机一致,且必须符合vcpkg三元组格式,其中你可以选择工作台的设置&a…

揭秘!5大策略让广告变现长久有效

在数字化时代的浪潮下,广告变现作为自媒体和APP开发者重要的收入来源,越来越受到重视。 但如何让这种变现方式长久持续,成为许多内容创作者与平台运营者思考的问题。 本文旨在探讨广告变现的持久之道,通过分析前端展示、合规性、…

OpenCV特征匹配

1、OpenCV Brute-Force匹配器 Brute-Force匹配器的匹配方法非常简单,输入两张图像所分别对应的特征(特征点坐标与特征点域对应的描述子),循环遍历两幅图像中的特征,计算第一幅图像与第二幅图像之间每个特征点之间的距…