Я пытаюсь установить Caffe в Ubuntu 16.04.Поскольку я хочу использовать его с OpenPose, я не хочу использовать Anaconda для установки Caffe.После установки множества зависимостей от Caffe (после нескольких онлайн-уроков) я обнаружил, что protobuf был установлен с использованием python:
$ pip show protobuf
Имя: 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 This файл был сгенерирован новой версией protoc с ошибкой # Этот файл был сгенерирован новой версией protoc с ^ .build_release / src / caffe / proto / caffe.pb.h: 13: 2: ошибка: # ошибка несовместима с вашими заголовками буфера протокола.Пожалуйста, обновите #error несовместимо с вашими заголовками буфера протокола.Пожалуйста, обновите ^ .build_release / src / caffe / proto / caffe.pb.h: 14: 2: ошибка: # ошибка ваших заголовков.# Ошибка ваших заголовков.^ В файле, включенном в .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' не выполнен make: *** [.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, похоже, система ее не обнаружила.В чем может быть проблема?