日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

protobuf版本常见问题

發布時間:2025/3/8 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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版本常见问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。