caffe:protobuf版本出错

问题描述 投票:5回答:4

我以前安装了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的旧版本吗?

computer-vision neural-network deep-learning caffe protocol-buffers
4个回答
4
投票

我怀疑你的问题是你的include路径中有多个版本的protobuf。它可能是从旧版本而不是最新版本中获取标题。我可以确认最新的caffe(现在的git master)与ubuntu 14.04LTS中的libprotobuf-dev-2.5.0-9ubuntu1完全编译。


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 protocprotoc --version来查找默认使用的protoc版本。在我的OS中:

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

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


0
投票

我解决了这个问题

conda uninstall libprotobuf

然后删除caffe文件夹并下载一个新文件夹

git clone https://github.com/BVLC/caffe.git

然后做

make all -j8
© www.soinside.com 2019 - 2024. All rights reserved.