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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

protobuf2和3同时安装_安装protobuf可能遇到的问题

發布時間:2024/7/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 protobuf2和3同时安装_安装protobuf可能遇到的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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.每步在執行過程中注意權限問題,有的命令不sudo執行會出問題。

./configure

make

make check

make install

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

3.動靜態庫問題部分是轉載

在Linux上編譯google protobuff時,configure 默認選項是生成動態庫,即libprotobuf.so文件。如果同時在多個動態庫(動態庫以dlopen方式動態加載)中使用同一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,則不能以動態庫的形式調用,改用靜態庫的形式在編譯時加載。

編譯google protobuff時,在configure 時加上選項:

configrue --disable-shared

即可編譯成靜態庫:libprotobuf.a 但是默認的configure文件中,在編譯時未加-fPIC ,導致在引用靜態庫的工程中編譯鏈接時報錯誤:

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文件不同,所以源代碼的行數也不同,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 的配對使用,否則執行不了,會出現語法錯誤,文件無法正常結束。

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

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

# 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,顯示出版本則說明安裝成功

總結

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

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