2015-08-16 3 views
3

Я пытаюсь установить Caffe, и я сталкиваюсь с этой расстраивающей ошибкой. Когда я бегу make я получаю следующее:protobuf common.h «Нет такого файла»

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:9:42: fatal error: google/protobuf/stubs/common.h: No such file or directory 
compilation terminated. 
make: *** [.build_release/src/caffe/proto/caffe.pb.o] Error 1 

Я использую буфер протокола Google 2.6.1 (https://developers.google.com/protocol-buffers/docs/downloads), и я действительно добавили директорию в PATH. Файл common.h определенно присутствует в каталоге (я вижу это своими глазами), но каким-то образом он не может его обнаружить. Я не знаю, что делать, и все решения от this issue, похоже, не работают для меня.

Любое понимание будет оценено по достоинству. Я подозреваю, что я пренебрегаю каким-то шагом, поскольку я довольно новичок в Linux.

спасибо.

ответ

6

PATH сообщает вашей оболочке, где искать команды. Он не сообщает вашему компилятору, где искать заголовки. Чтобы сообщить компилятору, чтобы найти заголовки в определенном каталоге, вам необходимо использовать флаг -I. Например:

g++ -I/path/to/protobuf/include -c my-source.cc 

Вам нужно будет убедить вашу систему сборки добавить этот флаг в командную строку компилятора. Все разумные системы сборки имеют какой-то способ сделать это, но детали меняются. Для Autoconf вы можете указать при запуске Configure:

./configure CXXFLAGS=-I/path/to/protobuf/include 

Для CMake Я думаю, что вы можете сделать что-то вроде этого (не проверено):

cmake -DCMAKE_CXX_FLAGS=-I/path/to/protobuf/include 

В качестве альтернативы, вы, вероятно, не имеют этой проблемы, если вы установленный protobuf до стандартного местоположения - либо /usr, либо /usr/local (следовательно, размещение заголовков в /usr/include/google/protobuf или /usr/local/include/google/protobuf).

Также обратите внимание, что почти все дистрибутивы Linux имеют пакет Protobuf, и вы, вероятно, должны использовать это, а не устанавливать Protobuf из исходного кода. Для получения заголовков вам понадобится пакет -dev или -devel. На Debian/Ubuntu:

sudo apt-get install libprotobuf-dev protobuf-compiler 
+0

Это не отвечает на вопрос ОП. заглушки просто отсутствуют в установке proto3 по умолчанию. – PKivolowitz

+0

@PKivolowitz Э? google/protobuf/stubs/common.h определенно все еще существует и установлен: https://github.com/google/protobuf/blob/master/src/Makefile.am#L85 (И вообще, OP явно сказал, что они используют 2.6 0,1.) –

Смежные вопросы