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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

安装protobuf可能遇到的问题

發(fā)布時間:2023/12/16 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安装protobuf可能遇到的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

下載protobuf-2.3.0:
????http://protobuf.googlecode.com/files/protobuf-2.3.0.zip

??? http://code.google.com/p/protobuf/downloads/list
安裝:?
unzip protobuf-2.3.0.zip
cd protobuf-2.3.0
./configure
make?
make check?
make install

1.每步在執(zhí)行過程中注意權限問題,有的命令不sudo執(zhí)行會出問題。

./configure
make
make check
make install

2. 執(zhí)行./configure 出現(xiàn)error,查看config.log文件看看是否缺某些安裝軟件,比如g++未安裝等,因為執(zhí)行文件中含有C++程序,所以出問題。

3.動靜態(tài)庫問題部分是轉載

在Linux上編譯google protobuff時,configure 默認選項是生成動態(tài)庫,即libprotobuf.so文件。如果同時在多個動態(tài)庫(動態(tài)庫以dlopen方式動態(tài)加載)中使用同一buff結構,則運行時會報錯誤:

ibprotobuf ERROR google/protobuf/descriptor_database.cc:57] File already exists in database: foo/foo.proto libprotobuf FATAL google/protobuf/descriptor.cc:862] CHECK failed: generated_database_->Add(encoded_file_descriptor, size): terminate called after throwing an instance of 'google::protobuf::FatalException' what(): CHECK failed: generated_database_->Add(encoded_file_descriptor, size): 為了解決這個問題,google protobuff,則不能以動態(tài)庫的形式調用,改用靜態(tài)庫的形式在編譯時加載。 編譯google protobuff時,在configure 時加上選項: configrue --disable-shared 即可編譯成靜態(tài)庫:libprotobuf.a 但是默認的configure文件中,在編譯時未加-fPIC ,導致在引用靜態(tài)庫的工程中編譯鏈接時報錯誤: libs/assert.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC .libs/assert.o: could not read symbols: Bad value解決該問題,需要重新編譯google protobuff庫,并添加編譯選項:-fPIC以文本形式打開google buff代碼目錄下的configure文件,在把第2575至2578行修改為如下:if test "x${ac_cv_env_CFLAGS_set}" = "x"; then : CFLAGS="-fPIC" fi if test "x${ac_cv_env_CXXFLAGS_set}" = "x"; then : CXXFLAGS="-fPIC" 需要注意的是不同版本的configure文件不同,所以源代碼的行數(shù)也不同,2.3.0是1962行開始,貼出被替換代碼,以便于替換

if test "x${ac_cv_env_CFLAGS_set}" = "x"; then
?CFLAGS=""
fi

if test "x${ac_cv_env_CXXFLAGS_set}" = "x"; then
? CXXFLAGS=""
fi
替換時注意if 和fi 的配對使用,否則執(zhí)行不了,會出現(xiàn)語法錯誤,文件無法正常結束。

4.在修改文件后編譯要重新編譯,首先進行make clean ,否則不會重新執(zhí)行。

5.最后修改環(huán)境變量,建議修改本用戶的環(huán)境變量,~/.bashrc,不修改etc下環(huán)境變量

# append protobuf to PATH/lys
export PROTOBUF_HOME=/usr/local/protobuf/protobuf-2.3.0
export PATH=$PROTOBUF_HOME/bin:$PATH

HOME目錄由安裝目錄而定,各不相同。

6.測試是否安裝成功,protoc --version,顯示出版本則說明安裝成功

總結

以上是生活随笔為你收集整理的安装protobuf可能遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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