我以前安装过caffe和Fast-RCNN,所以我应该拥有所有必需的库和依赖项。
我需要再次为使用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的旧版本吗?
答案 0 :(得分:4)
我怀疑你的问题是你的include路径中有多个版本的protobuf。它可能是从旧版本而不是最新版本中获取标题。我可以确认最新的caffe(现在的git master)与ubuntu 14.04LTS中的libprotobuf-dev-2.5.0-9ubuntu1完全编译。
答案 1 :(得分:1)
我想在你遇到这个问题之前,你已经使用protoc
来生成caffe.pb.h`。如果你这样做,我的解决方案可能对你有用。
首先,您应该知道您的操作系统中安装了多少protoc
。
例如,在我的操作系统中:
Prompt> whereis protoc
protoc: /usr/bin/protoc /home/xxx/.conda/envs/python27/bin/protoc/usr/share/man/man1/protoc.1.gz
因此,我的操作系统中有2个protoc
。您可以使用which protoc
和protoc --version
来查找默认使用的protoc
版本。在我的操作系统中:
Prompt> which protoc
/home/xxx/.conda/envs/python27/bin/protoc
Prompt>protoc --version
libprotoc 3.5.1
最后,使用其他protoc
再次创建caffe.pb.h
。
让dir到caffe/src/caffe/proto
,然后执行:
/usr/bin/protoc --cpp_out=. caffe.proto
答案 2 :(得分:0)
我在电脑上解决了这个问题,也许它可以帮到你。我的环境是Ubuntu16.04,在安装Caffe之前我安装了Anaconda(用于python2.7)。碰巧我使用conda来安装libprotobuf-dev,这导致与caffe的'sudo apt-get install libprotobuf-dev'命令发生冲突,'apt-get'和conda在我的计算机上安装不同,可以通过“找到protobuf”,所以我删除了Anaconda的libprotobuf版本,没有问题再次发生。
conda uninstall libprotobuf
在安装Caffe之前安装tensorflow时,由于libprotobuf冲突,也会发生此问题。
答案 3 :(得分:0)
我通过以下方式解决问题
conda uninstall libprotobuf
然后删除caffe文件夹并下载一个新文件夹
git clone https://github.com/BVLC/caffe.git
然后做
make all -j8