makeとopencvに関する問題

makeとopencvに関する問題

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で以下を実行してこの問題を解決しました。

  1. CMakeCache.txtファイルの削除

  2. cmake再生するには実行してください。

    cmake -D blah blah flags and values
    
  3. ファイルを編集CMakeCache.txtしてこの行を変更してください。

    //Path to a library.
    BZIP2_LIBRARIES:FILEPATH=/lib/libbz2.so.1
    

    これに関して

    //Path to a library.
    BZIP2_LIBRARIES:FILEPATH=/lib64/libbz2.so.1
    
  4. もう一度実行してくださいcmake(必要なものはわかりませんが、準備ができています)。

  5. make

それで完了です。エラーは発生しません。

関連情報