Я пытаюсь установить библиотеку Caffe, но у меня проблема с компиляцией из-за неправильной версии protobuf, установленной в моей системе.
In file included from .build_release/src/caffe/proto/caffe.pb.cc:5:0:
.build_release/src/caffe/proto/caffe.pb.h:17:2: error: #error This file was generated by an older version of protoc which is
#error This file was generated by an older version of protoc which is
^
.build_release/src/caffe/proto/caffe.pb.h:18:2: error: #error incompatible with your Protocol Buffer headers. Please
#error incompatible with your Protocol Buffer headers. Please
^
.build_release/src/caffe/proto/caffe.pb.h:19:2: error: #error regenerate this file with a newer version of protoc.
#error regenerate this file with a newer version of protoc.
Я следовал за многими из предложенных подходов на форуме, и я думаю, что наиболее похожая проблема обсуждалась в этом посте.
В caffe.pb.h элемент управления:
#if 3002000 < 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
Однако в моем системном заголовке (/usr/include/google/protobuf/stubs/common.h):
The current version, represented as a single integer to make comparison
easier: major * 10^6 + minor * 10^3 + micro
define GOOGLE_PROTOBUF_VERSION 2005000
Из терминала команда protoc —version возвращает libprotoc 3.2.0.
Итак, я установил версию 3.2, но системные заголовки не обновляются.
Один пользователь в предыдущем посте прокомментировал: «Я нашел способ, указав нужный мне протобуф сначала в переменной PATH, без необходимости удалять другую версию протобуфа (другие вещи зависели от этой старой версии)».
Может кто-нибудь объяснить мне шаг за шагом, как я могу следовать этому?
Или я могу обновить системные заголовки? Есть много элементов, которые связаны с libprotoc, поэтому я хотел бы избежать их повреждения.
Спасибо
Я решил это на своем компьютере, и, возможно, это поможет вам. Моя среда — Ubuntu16.04, и я установил Anaconda (для python2.7) перед установкой Caffe. Бывает, что я использовал conda для установки libprotobuf-dev, и это приводит к конфликту с командой caffe ‘sudo apt-get install libprotobuf-dev’, так как ‘apt-get’ и conda установлены по-разному на моем компьютере, которые можно найти с помощью ‘locate protobuf’, поэтому я удаляю версию libprotobuf от Anaconda, и больше никаких проблем не возникает.
conda uninstall libprotobuf
conda uninstall protobuf
При установке tenorflow перед установкой Caffe эта проблема также возникает из-за конфликта libprotobuf.
Других решений пока нет …