Centos

make 和 opencv 有問題

  • March 24, 2016

我正在嘗試為我的 x86_64 Centos 6 作業系統建構 opencv。

我認為問題在於 make 試圖使用 bz2 庫的 32 位版本而不是 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

在瀏覽了其他幾個問答網站後,我發現問題是 cmake 使用 32 位庫,就好像它是 64 位庫一樣。

我通過這樣做在 Fedora 22 上解決了這個問題:

  1. 刪除你的CMakeCache.txt文件
  2. 執行cmake以再生它
cmake -D blah blah flags and values
  1. 編輯您的CMakeCache.txt文件並更改此行
//Path to a library.
BZIP2_LIBRARIES:FILEPATH=/lib/libbz2.so.1

對此

//Path to a library.
BZIP2_LIBRARIES:FILEPATH=/lib64/libbz2.so.1
  1. 再次執行cmake(不確定是否需要,但以防萬一)
  2. make

然後它沒有錯誤地完成

引用自:https://unix.stackexchange.com/questions/251560