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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值