前言
編譯調試項目的過程中涉及到caffe的編譯,提示沒有安裝protobuf的錯誤,本文詳解protobuf的安裝;
問題描述
解決步驟
1.查看google protobuf的github,沒有直接使用release而是對源碼按照readme文件進行了編譯;
protobuf需要一些依賴庫,需要先進行安裝;
$ sudo apt-get install autoconf automake libtool curl make g++ unzip
出現問題
注意,紅框中的內容表示當前系統的sources.list中沒有該庫的源鏈接(目錄在/etc/apt/sources.list),但並不表示當前系統沒有安裝該庫;
不過,博主的當前系統的確是沒有安裝該庫;
2.安裝curl依賴庫,參考here,不過最后的步驟改為以下命令則可正確安裝;
sudo make install
3. 按照protobuf的readme操作運行以下命令出錯;
$ ./autogen.sh
錯誤如下
說明缺少gmock這個依賴庫;
4.安裝gmock依賴庫,可參考here;
5.安裝之后按照readme的步驟進行編譯即可;
$ ./configure $ make $ make check $ sudo make install $ sudo ldconfig # refresh shared library cache.
注意,依賴庫的版本需要與項目需要的版本一致,故注意依賴庫的版本;
博主在解決這個問題的過程中編譯完成的是當前protobuf的最新版本3.5.1,后來發現項目使用的是2.6.0或者2.6.1版本的;
linux系統安裝依賴庫的方法
如何安裝各種依賴庫或者工具包;
1)直接使用apt-get install進行安裝,這樣能夠正確安裝的前提是系統中有源鏈接的文件,在/etc/apt/source.list文件中;
2)直接在github或者官網上找到包的源碼,自己按照一定的步驟進行編譯,需要注意的問題是版本是否一致;
3)一種是直接在相關網站上找到對應系統的包的release版本,使用sudo dpkg -I filename進行安裝,
這個需要注意的是安裝的包本身可能需要多個依賴項,需要將全部的依賴項都下載下來進行安裝,
同時也需要注意包的版本是否匹配,另外,網站上的依賴包可能會有壞的,需要檢查一下是否正確安裝依賴項,
不能只查看文件,文件存在不一定正確安裝,有可能只是一個空的鏈接,切記切記!!!!!
另外,我們使用的板子是ARM板子,故選擇的包是arm64的,同時系統版本的codename是Xenial的,選擇包的版本的時候需要注意。
使用lsb_release -a命令行可以查看系統的版本屬性等;
一般含有箭頭的文件可能就是某個鏈接,沒有正確安裝;
參考
2.依賴庫curl的安裝1;
3.curl的安裝-百度;
完