国内做免费的视频网站,php网站开发淮安招聘,兰州seo优化公司,28招商加盟网protobuf版本常见问题
许多软件都依赖 google 的 protobuf#xff0c;我们很有可能在安装多个软件时重复安装了多个版本的 protobuf#xff0c;它们之间很可能出现冲突并导致在后续的工作中出现版本不匹配之类的错误。本文将讨论笔者在使用 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 doesnt 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