1. 程式人生 > >編譯caffe的一個protobuf問題

編譯caffe的一個protobuf問題

編譯caffe遇到的一個奇葩問題

一直都顯示protobuf的問題,如下圖所示:
這裡寫圖片描述
undefined reference to ‘google::protobuf::MessageLite::SerializeToString’
對於我這種老司機來說,編譯安裝caffe已經無數次了,看到這個的第一反應就是libprotobuf-dev這個沒有安裝,於是

sudo apt-get install libprotobuf-dev

但是系統提示我已經安裝了。於是我想到會不會是沒安裝好,於是

sudo apt-get remove libprotobuf-dev

但是問題依然存在。然後我想到我之前切換過gcc的版本,會不會這個有問題,然後

sudo update-alternatives --config gcc

切換到gcc5.6版本
但是問題依然存在啊,我的天,瞬間我有種不祥的預感。於是把錯誤在google上一貼,確實有人說編譯器的版本問題,也有人說libprotobuf-dev這個東西不好,需要自己編譯protobuf原始碼。

所以我又嘗試去下載protobuf原始碼編譯
1、https://github.com/google/protobuf
2、./configure
3、make
4、make check
5、sudo make install
6、sudo ld config

然後我又重新make clean,再次的make
但是依然還是同樣的錯誤啊。
簡直淚崩。
最後我想手動地把所有關於protobuf的東西全部刪除。
/usr/local
/usr/local/lib等等這裡面的protobuf的相關東西全部刪除。然後再重新編譯protobuf。但是依然還是錯誤。

然後我檢查Makefile的裡面的protobuf的包含路徑,也都是確實沒有問題。

然後我一怒之下把python環境配置為系統自帶的python環境,馬丹,,,居然錯誤就沒有了。瞬間就定位到錯誤原來是anaconda。因為我的anaconda裡面安裝了tensorflow的環境,所以一直沒動它,tensorflow裡面也是需要protobuf的,裡面安裝的protobuf版本和系統安裝的版本有了衝突所以就一直出錯。
。。。。。
最後就是這個問題了。