4

我以前安裝過caffe和Fast-RCNN,所以我應該擁有所有必需的庫和依賴關係。caffe:protobuf版本錯誤

我需要爲使用Caffe的另一個存儲庫(https://github.com/ronghanghu/natural-language-object-retrieval)再次安裝它。

當我運行

make all 

它給了我下面的錯誤:

CXX .build_release/src/caffe/proto/caffe.pb.cc 
In file included from .build_release/src/caffe/proto/caffe.pb.cc:5:0: 
.build_release/src/caffe/proto/caffe.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is 
#error This file was generated by a newer version of protoc which is 
^ 
.build_release/src/caffe/proto/caffe.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update 
#error incompatible with your Protocol Buffer headers. Please update 
^ 
.build_release/src/caffe/proto/caffe.pb.h:14:2: error: #error your headers. 
#error your headers. 
^ 
In file included from .build_release/src/caffe/proto/caffe.pb.cc:5:0: 
.build_release/src/caffe/proto/caffe.pb.h:26:55: fatal error: google/protobuf/generated_enum_reflection.h: No such file or directory 
#include <google/protobuf/generated_enum_reflection.h> 

compilation terminated. 
make: *** [.build_release/src/caffe/proto/caffe.pb.o] Error 1 

我想,也許protobuf的已更新,並試圖

protoc --version 

返回

libprotoc 2.5.0 

似乎更新版本的protobuf已經發布(2.6或更高版本)。

所以我的問題是:

1)有沒有簡單的方法來更新它?

2)如果我更新它,它會影響我以前安裝的caffe和fast-rcnn,這取決於舊版本的protobuf?

回答

3

我懷疑你的問題是你的include路徑中有多個版本的protobuf。它可能是從舊版本而不是最新版本獲取標題。我可以確認最新的caffe(現在的git master)對ubuntu 14.04LTS中的libprotobuf-dev-2.5.0-9ubuntu1進行乾淨編譯。

+4

我該如何處理多個版本問題? – ytrewq

+0

是否有任何解決方案的多個版本和頭問題? – AruniRC

+0

我也會對解決方案感興趣。 (對不起,我希望這不是垃圾郵件) 如何鏈接到位於例如位置的另一版本的protobuf在/ usr /地方? – MUmla

0

我在我的電腦上解決了這個問題,也許它可以幫助你。我的環境是Ubuntu16.04,我在安裝Caffe之前安裝了Anaconda(用於python2.7)。它發生了,我用conda來安裝libprotobuf-dev,這導致與caffe的'sudo apt-get install libprotobuf-dev'命令衝突,因爲'apt-get'和conda安裝在我的計算機上,可以通過它找到'locate protobuf',所以我刪除了Anaconda的libprotobuf版本,並且沒有再次發生問題。

conda uninstall libprotobuf 

當您在安裝Caffe之前安裝tensorflow時,由於libprotobuf衝突,此問題也會發生。