protobuf版本常见问题
2022/1/6 23:38:49
本文主要是介绍protobuf版本常见问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
protobuf版本常见问题
许多软件都依赖 google 的 protobuf,我们很有可能在安装多个软件时重复安装了多个版本的 protobuf,它们之间很可能出现冲突并导致在后续的工作中出现版本不匹配之类的错误。本文将讨论笔者在使用 protobuf 中遇到的一些问题,以及最终的解决方案,持续更新。读者遇到其他的版本问题的报错也欢迎留言讨论。
protobuf的安装方式
-
Linux系统级安装
sudo apt-get install libprotobuf-dev protobuf-compiler #Linux系统级的安装
-
通过python2安装
sudo pip install google protocol #python2.7版本的安装
-
通过python3安装
sudo pip3 install google protocol #python3.5版本的安装
-
通过anaconda安装
conda install protobuf #anaconda版本的安装
查看系统中已有的protobuf版本
-
查看哪些路径下安装了protobuf
whereis protoc
-
查看当前默认的protobuf
which protoc
-
查看当前默认的protobuf的版本
protoc --version
-
查看当前默认的系统级protobuf版本
sudo protoc --version
错误一:protobuf编译器版本与库版本不匹配
报错信息
这是笔者在构建 ncnn 时遇到的一个 CMake 报错,关键报错信息如下:
Protobuf compiler version 3.13.0 doesn't match library version 3.18.0
即protobuf编译器版本与库版本不匹配。
解决方法
通过查看系统中的protobuf版本和当前的版本,发现确实存在不匹配现象,修改 PATH
环境变量后解决。
先查看现有的protoc路径
$ whereis protoc protoc: /usr/local/bin/protoc /home/song/anaconda3/envs/JJ_env/bin/protoc
发现有 conda 环境下的和系统中的两个,分别查看它们的版本:
$ /home/song/anaconda3/envs/JJ_env/bin/protoc --version libprotoc 3.13.0 $ protoc --version libprotoc 3.13.0
确实是 3.13 和 3.18,与报错信息对应上了,再看一下系统中的protobuf版本和当前默认的版本:
$ protoc --version libprotoc 3.13.0 $ sudo protoc --version libprotoc 3.18.0
恰好也是系统中的是 3.18 版本,当前默认的是 3.13 版本,到这里已经基本破案了。
我们再来看一下环境变量 PATH
加以验证:
$ echo $PATH /home/song/anaconda3/envs/JJ_env/bin:/usr/local/cuda/bin:/home/song/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/song/mbin:/usr/local/ffmpeg/bin
果然,conda 环境的搜索顺序比系统的搜索顺序靠前,故现在默认的是 conda 环境中的版本,我们将系统的protoc搜索路径放在前面:
$ export PATH=/usr/local/bin/:$PATH $ protoc --version libprotoc 3.18.0
已经匹配上了,再次进行 CMake 构建,顺利通过。
Ref:
https://blog.csdn.net/m0_38082419/article/details/80117132
这篇关于protobuf版本常见问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南