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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

protobuf版本冲突

發(fā)布時(shí)間:2023/12/31 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 protobuf版本冲突 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在編譯chromium代碼的過程中發(fā)現(xiàn),官方推薦使用的版本是ubuntu16.04,但是這個(gè)版本的ubuntu比較老舊,一些庫都比較老了,但是google自己用的部分卻是挺新的,protobuf就是一個(gè)例子,在ubuntu16.04上默認(rèn)安裝的protobuf的版本是2.6.1,但是chromium在執(zhí)行的時(shí)候用的是自己代碼編譯出的protobuf庫,版本是3.5.1就會報(bào)錯(cuò),提示你版本不兼容,比較坑的是,這個(gè)東西是在執(zhí)行二進(jìn)制文件的時(shí)候報(bào)錯(cuò)的,就是需要會重新編譯。同時(shí)需要安裝新版本的protobuf,報(bào)錯(cuò)如下所示

[libprotobuf FATAL ../../third_party/protobuf/src/google/protobuf/stubs/common.cc:79] This program was compiled against version 2.6.1 of the Protocol Buffer runtime library, which is not compatible with the installed version (3.5.1). Contact the program author for an update. If you compiled the program yourself, make sure that your headers are from the same version of Protocol Buffers as your link-time library. (Version verification failed in "/build/mir-O8_xaj/mir-0.26.3+16.04.20170605/obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc".) Aborted (core dumped)

卸載原來的protobuf

如果原來有則需要卸載,可以通過protoc --version查看當(dāng)前版本,版本不對可以卸載

$ sudo apt remove libprotobuf-dev #這個(gè)不確定是否需要卸載 $ sudo apt remove protobuf-compiler

安裝protobuf

在ubuntu16.04上安裝protobuf
要先確定一點(diǎn),你要安裝的版本的是多少,在這個(gè)網(wǎng)址https://github.com/protocolbuffers/protobuf/tags下載你所需要的包,語言也需要搞清楚,例如我用于C++編譯的3.5.1版本的包,下載protobuf-cpp-3.5.1.tar.gz就好了。(其他語言就下其他版本的,如果全都要可以下all的)
下好之后解壓,進(jìn)入解壓后的目錄,準(zhǔn)備開始安裝
需要注意的一點(diǎn)是這個(gè)protobuf默認(rèn)安裝在/usr/local,在一些平臺上/usr/local/lib默認(rèn)不是LD_LIBRARY_PATH,你可以手動添加,但是如果把安裝目錄指定在/usr會更簡單省事兒。
那么怎么指定呢?下面是默認(rèn)安裝命令,但是先別急著執(zhí)行

$ ./autogen.sh $ ./configure $ make $ make check $ sudo make install $ sudo ldconfig # refresh shared library cache.
修改默認(rèn)安裝路徑

/usr/local不是LD_LIBRARY_PATH,但是/usr是啊,改下默認(rèn)安裝路徑,在執(zhí)行第二步的時(shí)候指定

$ ./configure --prefix=/usr
沒有指定怎么辦

如果沒有指定有可能會出現(xiàn)找不到庫的情況可以通過protoc --version查看,找不到庫會報(bào)錯(cuò),如果能找到就會顯示安裝的版本
手動添加到/etc/profile中

$ sudo vim /etc/profile export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/ export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib/ export PATH=$PATH:/usr/local/bin/ export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/include/ export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include/ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

然后重啟,查看版本驗(yàn)證即可

后續(xù)

后來發(fā)現(xiàn)報(bào)錯(cuò)不是因?yàn)橄到y(tǒng)庫版本過低,而是系統(tǒng)使用的這個(gè)文件的頭部顯示mir_protobuf.pb.cc這個(gè)文件是由2.6.1的protobuf-compiler編譯得來的,這就說明無法通過安裝更高版本的庫來解決這個(gè)問題,因?yàn)檫@個(gè)文件是系統(tǒng)已經(jīng)有的,不能通過重新安裝新庫來解決這個(gè)問題。通過提升系統(tǒng)版本的方式解決這個(gè)問題比較穩(wěn)妥。

轉(zhuǎn)載于:https://www.cnblogs.com/lenomirei/p/10342411.html

總結(jié)

以上是生活随笔為你收集整理的protobuf版本冲突的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。