x86_64 Centos 6オペレーティングシステム用のopencvを構築しようとしています。
問題は、makeが64ビットバージョンではなく32ビットバージョンのbz2ライブラリを使用しようとしていることです。
make で次のエラーが発生します。
[ 17%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_mjpeg_decoder.cpp.o
[ 17%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_dc1394_v2.cpp.o
[ 17%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_gstreamer.cpp.o
[ 19%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_v4l.cpp.o
[ 19%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o
Linking CXX shared library ../../lib/libopencv_videoio.so
/lib/libbz2.so.1: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[2]: *** [lib/libopencv_videoio.so.3.1.0] Error 1
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
make: *** [all] Error 2
私は次のようにcmakeを実行します。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_LIBRARY_PATH=/usr/lib64 CMAKE_INSTALL_PREFIX=/usr/local ..
ライブラリをインストールしました。
[root@localhost build]# ldconfig -p | grep libbz2
libbz2.so.1 (libc6,x86-64) => /lib64/libbz2.so.1
libbz2.so.1 (libc6) => /lib/libbz2.so.1
この問題を解決するにはどうすればよいですか?ありがとうございます!
編集:また/libと/lib64ディレクトリがあり、/lib64にはlibbz2.so.1とlibbz2.so.1.0.4があります。
編集:私はこの指示に従っています http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html
答え1
さまざまなQ&Aサイトを閲覧した後、cmakeが64ビットライブラリを使用するのと同じように、32ビットライブラリを使用することが問題であることがわかりました。
私はFedora 22で以下を実行してこの問題を解決しました。
CMakeCache.txt
ファイルの削除cmake
再生するには実行してください。cmake -D blah blah flags and values
ファイルを編集
CMakeCache.txt
してこの行を変更してください。//Path to a library. BZIP2_LIBRARIES:FILEPATH=/lib/libbz2.so.1
これに関して
//Path to a library. BZIP2_LIBRARIES:FILEPATH=/lib64/libbz2.so.1
もう一度実行してください
cmake
(必要なものはわかりませんが、準備ができています)。make
それで完了です。エラーは発生しません。