Ubuntu下protobuf的安裝、編譯及注意事項
Ubuntu下編譯protobuf
1.下載protobuf
下載地址:https://github.com/google/protobuf/releases
2.編譯protobuf
解壓下載的zip包,cd到protobuf的目錄下,執行以下指令:
tar -xvf protobuf
cd protobuf
./configure –prefix=/usr/local/protobuf
make
make check
make install
在protobuf解壓包的根目錄下的README.md檔案中看到c++的編譯方法,根據提示進入到protobuf根目錄下的src目錄,該目錄下的README.md就是c++的編譯方法,上述的編譯步驟可從該檔案中找到。
3.檢查安裝是否成功
protoc –version
如果成功,則會輸出版本號資訊,例如:libprotoc 3.5.1
如果有問題,則會輸出錯誤內容。
4.錯誤及解決方法
protoc: error while loading shared libraries: libprotoc.so.8: cannot open shared
錯誤原因:
protobuf的預設安裝路徑是/usr/local/lib,而/usr/local/lib 不在Ubuntu體系預設的 LD_LIBRARY_PATH 裡,所以就找不到該lib
解決方法:
1.建立檔案 /etc/ld.so.conf.d/libprotobuf.conf 包含內容:
/usr/local/lib
2.輸入命令重點內容
sudo ldconfig
這時,再執行protoc –version 就可以正常看到版本號了
如果protoc不能使用,則:
(1) vim /etc/profile,新增
export PATH=$PATH:/usr/local/protobuf/bin/
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
儲存執行,source /etc/profile。同時在~/.profile中新增上面兩行程式碼,否則會出現登入使用者找不到protoc命令。
(2) 配置動態連結庫
vim /etc/ld.so.conf,在檔案中新增/usr/local/protobuf/lib(注意: 在新行處新增),然後執行命令: ldconfig
protoc編譯器應用:
protoc addressbook.proto –cpp_out=./
生成可執行檔案:
g++ addPerson.cpp addressbook.pb.cc -o addPerson -lpthread -l protobuf
注:
如果不加 “-lpthread -l protobuf”引數可能會導致編譯報錯。
參考:
https://blog.csdn.net/xocoder/article/details/9155901
https://www.cnblogs.com/youxin/p/4073703.html
https://blog.csdn.net/u012023606/article/details/54584282
https://blog.csdn.net/u012023606/article/details/54583526