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冲突,此问题也会发生。