Проблемы с make и opencv

Я пытаюсь собрать 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

0
26.12.2015, 00:07
1 ответ

После просмотра нескольких других сайтов вопросов и ответов я пришел к выводу, что проблема в том, что cmake использует 32-битную библиотеку так, как будто она 64-битная.

Я решил эту проблему на Fedora 22 следующим образом:

  1. удалите ваш CMakeCache.txt файл

  2. запустите cmake для его регенерации

    cmake -D blah blah флаги и значения.
    
  3. Отредактируйте ваш CMakeCache.txt файл и измените эту строку

    //Путь к библиотеке.
    BZIP2_LIBRARIES:FILEPATH=/lib/libbz2.so.1
    

    на эту

    //Путь к библиотеке.
    BZIP2_LIBRARIES:FILEPATH=/lib64/libbz2.so.1
    
  4. Запустите cmake снова (не уверен, что это необходимо, но на всякий случай)

  5. make

Затем он завершился без ошибок

2
28.01.2020, 02:35

Теги

Похожие вопросы