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
그러면 완료되었습니다. 오류가 발생하지 않습니다.