Centos
make 和 opencv 有問題
我正在嘗試為我的 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 上解決了這個問題:
- 刪除你的
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
然後它沒有錯誤地完成