2016-06-30 13 views
1

私はソースからOpenCVを構築しようとしています。私は私のホームディレクトリにprotobufをインストールしました。それは--enable-sharedで建設されました。 LD_LIBRARY_PATHの頭には$HOME/libがあります。 LIBRARY_PATHおよびLD_RUN_PATHは、$LD_LIBRARY_PATHに設定され、CPATHは、$HOME/includeに設定されます。 PKG_CONFIG_PATH$HOME/lib/pkgconfigになります。OpenCVはソースからビルドされたprotobufへの未定義参照を構築します

opencv==3.1.0 
gcc==4.8.5 
g++==4.8.5 
python==3.5.2 
protobuf==2.6.1 

私のcmakeのコマンドは

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=$HOME -D OPENCV_EXTRA_MODULES_PATH=$HOME/opencv_contrib-3.1.0/modules -D PYTHON_DEFAULT_EXECUTABLE=$HOME/bin/python -D CMAKE_PREFIX_PATH=$HOME .. 

cmakeのが成功したとさえ、それは<~>/lib/libprotobuf.soでいるProtobufを見つけたと言うである:ここでは

は、いくつかの関連バージョンです。しかしmakeはそれを見つけることができません。

../../lib/libopencv_dnn.so.3.1.0: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::string const&, google::protobuf::io::CodedOutputStream*)' 
../../lib/libopencv_dnn.so.3.1.0: undefined reference to `google::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::string const&, unsigned char*)' 
../../lib/libopencv_dnn.so.3.1.0: undefined reference to `google::protobuf::internal::InitEmptyString()' 
../../lib/libopencv_dnn.so.3.1.0: undefined reference to `google::protobuf::internal::empty_string_once_init_' 
../../lib/libopencv_dnn.so.3.1.0: undefined reference to `google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(int, std::string const&, google::protobuf::io::CodedOutputStream*)' 
../../lib/libopencv_dnn.so.3.1.0: undefined reference to `google::protobuf::internal::empty_string_' 
../../lib/libopencv_dnn.so.3.1.0: undefined reference to `google::protobuf::io::CodedInputStream::BytesUntilTotalBytesLimit() const' 
collect2: error: ld returned 1 exit status 
make[2]: *** [bin/opencv_test_dnn] Error 1 
make[1]: *** [modules/dnn/CMakeFiles/opencv_test_dnn.dir/all] Error 2 

他の場所のカップルがいるProtobufの複数のバージョンが問題を引き起こす可能性があることに言及します。 /lib64の別のprotobufですが、私はrootアクセス権がないので削除できません。だから私は回避策が何であるか分かりません。

+0

私はGCC 4.8.5または4.9で同じ問題を抱えていますが、openCVはgcc 5.4でOKです。残念ながらMatlabはGCC 5を正式にサポートしていないため、以前のGCCでビルドする必要があります – Blaze

答えて

0

最新のprotobuf(3.1.0)をインストールしてGCC 4.9でopencvをビルドしたので、最近同じ問題が発生しました。私がGCC 5に戻ったとき、OpenCV 3.1はうまく構築できます。

あなたがOpenCVの3.1と一緒にMATLABを使用したい場合、私はあなたが、あなたがOpenCVのを再構築するためにGCC 4.9を使用することができ、いるProtobuf-2.5.0のように、自分のいるProtobufのバージョンをダウングレードする必要があるかもしれないと思います。

関連する問題