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

相关推荐
꧁坚持很酷꧂25 分钟前
Linux Ubuntu18.04下安装Qt Craeator 5.12.9(图文详解)
linux·运维·qt
凉、介42 分钟前
PCI 总线学习笔记(五)
android·linux·笔记·学习·pcie·pci
电鱼智能的电小鱼1 小时前
EFISH-SBC-RK3588无人机地面基准站项目
linux·网络·嵌入式硬件·机器人·无人机·边缘计算
foo1st1 小时前
Tomcat Web应用(Ubuntu 18.04.6 LTS)部署笔记
ubuntu·tomcat
电鱼智能的电小鱼1 小时前
基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案
linux·网络·嵌入式硬件·数码相机·无人机·边缘计算
小诸葛的博客2 小时前
详解Linux中的定时任务管理工具crond
linux·运维·chrome
一默19912 小时前
CentOS 7.9升级OpenSSH到9.9p2
linux·运维·centos
keep intensify2 小时前
Linux常用指令
linux·服务器·php
带电的小王3 小时前
sherpa-ncnn:Linux(x86/ARM32/ARM64)构建sherpa-ncnn --语音转文本大模型
linux·语音识别·实时音视频·sherpa-ncnn
沧浪之水!3 小时前
【Linux网络】:套接字之UDP
linux·网络·udp