我正在尝试在Ubuntu 16.04上安装Caffe。因为我想将它与OpenPose一起使用,所以我不想使用Anaconda来安装Caffe。在安装了很多Caffe依赖项之后(在线上有多个教程),我发现protobuf是使用python安装的:
$ pip显示协议
名称:protobuf
版本:3.6.1
摘要:协议
缓冲区主页:https://developers.google.com/protocol-buffers/
作者:无作者电子邮件:无许可证:3条款BSD许可证
位置:/home/userq/.local/lib/python2.7/site-packages
需要:setuptools,六个
必填者:
根据过去的经验,我知道使用 apt-get install libprotobuf-dev protobuf-compiler 安装的Protobuf版本早于3.6.1,因此我下载了protobuf 3.6.1二进制文件并将其放入在/ usr / bin和/ usr / include中。现在我有:
$ protoc --version
libprotoc 3.6.1
但是当我尝试构建Caffe时,它失败了:
CXX .build_release / src / caffe / proto / caffe.pb.cc 在.build_release / src / caffe / proto / caffe.pb.cc:4:0中包含的文件中: .build_release / src / caffe / proto / caffe.pb.h:12:2:错误:#error此文件是由protoc的较新版本生成的 #error此文件是由protoc的较新版本生成的 ^ .build_release / src / caffe / proto / caffe.pb.h:13:2:错误:#error与协议缓冲区标头不兼容。请更新 #error与您的协议缓冲区标头不兼容。请更新 ^ .build_release / src / caffe / proto / caffe.pb.h:14:2:错误:#error您的标头。 #error您的标题。 ^ 在.build_release / src / caffe / proto / caffe.pb.cc:4:0中包含的文件中: .build_release / src / caffe / proto / caffe.pb.h:23:35:致命错误:google / protobuf / arena.h:没有此类文件或目录 编译终止。 Makefile:598:目标'.build_release / src / caffe / proto / caffe.pb.o'的配方失败 制作:*** [.build_release / src / caffe / proto / caffe.pb.o]错误1
当我打开文件 .build_release / src / caffe / proto / caffe.pb.h 时,我发现当protobuf版本低于3.6.1时会生成这样的错误消息。这是该文件的摘录:
#if GOOGLE_PROTOBUF_VERSION < 3006001
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif
在这种情况下,我认为不存在版本冲突。尽管我有3.6.1版,但似乎系统未检测到它。可能是什么问题?
答案 0 :(得分:0)
我也有同样的问题,但是我认为这是因为protoc --version 3.6尝试为我安装protoc 3.0的问题。