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库之后,一些白色字体的提醒就没有了,如下图

相关推荐
Xの哲學6 分钟前
Linux CFS 调度器深度解析
linux·服务器·算法·架构·边缘计算
大聪明-PLUS6 分钟前
关于 systemd 和桌面应用程序自动启动
linux·嵌入式·arm·smarc
广东大榕树信息科技有限公司31 分钟前
如何运用国产信创动环监控系统来保障生产安全与效率提升?
运维·网络·物联网·国产动环监控系统·动环监控系统
野猪佩挤33 分钟前
jenkins-ci/cd yaml模版配置
运维·ci/cd·jenkins
松涛和鸣35 分钟前
DAY42 SQLite3 : Dictionary Import and Data Query Implementation with C Language
linux·c语言·数据库·单片机·网络协议·sqlite
斯普信云原生组39 分钟前
开源软件日志统一管理方案-Filebeat
运维·jenkins
小馬佩德罗1 小时前
如何将x264 x265的动态库编译入Linux系统中的FFmpeg源码 - x265库编译
linux·ffmpeg·x265
飞Link1 小时前
【Anaconda】Linux(CentOS7)下安装Anaconda教程
linux·运维·python
DigitalOcean1 小时前
Ubuntu/Debian VPS 上 Apache Web 服务器的完整配置教程
ubuntu·apache
Ama_tor1 小时前
docker|F盘安装の1键部署软件及数据储存+2个保姆级运行实例
运维·docker·容器