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

그러면 완료되었습니다. 오류가 발생하지 않습니다.

관련 정보