Caffeをインストールしようとしていますが、この苛立たしいエラーが発生しています。 make
を実行すると、次のようになります。
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ファイルは間違いなくディレクトリにありますが(私は自分の目で見ています)、どういうわけかそれを検出できません。私には何をすべきかわからない、そして この問題 からのすべての解決策は私のためにうまくいかないようだ。
任意の洞察をいただければ幸いです。私はLinuxにかなり慣れていないので、どこかで一歩を怠っていると思います。
どうもありがとうございました。
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