Я пытаюсь собрать opencv для моей операционной системы x86_64 Centos 6.
Я думаю, что проблема в том, что make пытается использовать 32-битную версию библиотеки bz2 вместо 64-битной.
Я получаю эту ошибку от 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
Что я могу сделать, чтобы решить эту проблему? Спасибо!
EDIT: У меня также есть каталоги /lib и /lib64 и в /lib64 у меня есть libbz2.so.1 и libbz2.so.1.0.4
EDIT: И я следую этим инструкциям. http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html
После просмотра нескольких других сайтов вопросов и ответов я пришел к выводу, что проблема в том, что cmake использует 32-битную библиотеку так, как будто она 64-битная.
Я решил эту проблему на Fedora 22 следующим образом:
удалите ваш CMakeCache.txt
файл
запустите cmake
для его регенерации
cmake -D blah blah флаги и значения.
Отредактируйте ваш CMakeCache.txt
файл и измените эту строку
//Путь к библиотеке.
BZIP2_LIBRARIES:FILEPATH=/lib/libbz2.so.1
на эту
//Путь к библиотеке.
BZIP2_LIBRARIES:FILEPATH=/lib64/libbz2.so.1
Запустите cmake
снова (не уверен, что это необходимо, но на всякий случай)
make
Затем он завершился без ошибок