在CentOS上用Python模块安装OpenCV出错了

当我运行这个命令来安装Python模块的OpenCV

cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_EXAMPLES=ON -DBUILD_NEW_PYTHON_SUPPORT=ON -DINSTALL_PYTHON_EXAMPLES=ON -DPYTHON_EXECUTABLE=/usr/local/bin/python2.7 -DPYTHON_INCLUDE_DIR=/usr/local/include/python2.7/ -DPYTHON_LIBRARY=/usr/local/lib/python2.7/config/libpython2.7.a -DPYTHON_NUMPY_INCLUDE_DIR=/usr/local/lib/python2.7/site-packages/numpy/core/include/ -DPYTHON_PACKAGES_PATH=/usr/local/lib/python2.7/site-packages/ -DBUILD_PYTHON_SUPPORT=ON 

我得到这个错误消息。

 /usr/bin/ld: /usr/local/lib/python2.7/config/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC /usr/local/lib/python2.7/config/libpython2.7.a: could not read symbols: Bad value collect2: ld returned 1 exit status make[2]: *** [lib/cv2.so] Error 1 make[1]: *** [modules/python/CMakeFiles/opencv_python.dir/all] Error 2 make: *** [all] Error 2 

我不明白什么是错误的和错误消息。

有人能告诉我这有什么问题吗?

顺便说一句,我的操作系统是CentOS。

我使用Python2.7.5

我回答我自己的问题。 希望遇到同样问题的人在短时间内找到出路。

首先,使用yum来更新所有pagackage。在安装OpenCV时,我得到了一些归因于依赖性问题的bug。

  sudo yum update --skip-broken 

2.用“–enable-shared”重建你的Python。 使用python模块的OpenCV需要正确构建“libpython2.7.so”文件。 但是,如果你没有这个配置,只是建立了python,很可能你没有这个文件。 “libpython2.7.a”是不够的。 就我而言,当我将libpython2.7.a作为一个python库源代码时,它不断崩溃。

所以..下载Python 2.7.5(或类似的东西),并重新配置像这样。

 ./configure --enable-shared make make install 

现在你可能会得到“libpython2.7.so”和“libpython2.7.so.1.0”

3.用python模块建立你的OpenCV。 这是我安装编码。 我想这个例子可以帮助你解决问题。

 cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_EXAMPLES=ON -DBUILD_NEW_PYTHON_SUPPORT=ON -DINSTALL_PYTHON_EXAMPLES=ON -DPYTHON_EXECUTABLE=/usr/local/bin/python2.7 -DPYTHON_INCLUDE_DIR=/usr/local/include/python2.7/ -DPYTHON_LIBRARY=/usr/local/lib/libpython2.7.so.1.0 -DPYTHON_NUMPY_INCLUDE_DIR=/usr/local/lib/python2.7/site-packages/numpy/core/include/ -DPYTHON_PACKAGES_PATH=/usr/local/lib/python2.7/site-packages/ -DBUILD_PYTHON_SUPPORT=ON 

就这样。