make 和 opencv 出现问题

make 和 opencv 出现问题

我正在尝试为我的 x86_64 Centos 6 操作系统构建 opencv。

我认为问题是 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

我可以做什么来解决这个问题?谢谢!

编辑:我还有目录 /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

在浏览了其他几个问答网站后,我发现问题是 cmake 使用 32 位库就像使用 64 位库一样。

我在 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

然后就完成了,没有错误

相关内容