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

相关推荐
xuanzdhc1 小时前
Linux 基础IO
linux·运维·服务器
愚润求学1 小时前
【Linux】网络基础
linux·运维·网络
bantinghy2 小时前
Linux进程单例模式运行
linux·服务器·单例模式
小和尚同志3 小时前
29.4k!使用 1Panel 来管理你的服务器吧
linux·运维
帽儿山的枪手3 小时前
为什么Linux需要3种NAT地址转换?一探究竟
linux·网络协议·安全
shadon1789 天前
回答 如何通过inode client的SSLVPN登录之后,访问需要通过域名才能打开的服务
linux
小米里的大麦9 天前
014 Linux 2.6内核进程调度队列(了解)
linux·运维·驱动开发
程序员的世界你不懂9 天前
Appium+python自动化(三十)yaml配置数据隔离
运维·appium·自动化
算法练习生9 天前
Linux文件元信息完全指南:权限、链接与时间属性
linux·运维·服务器
忘了ʷºᵇₐ9 天前
Linux系统能ping通ip但无法ping通域名的解决方法
linux·服务器·tcp/ip