【问题标题】:Installing OpenCV with python module on CentOS goes wrong在 CentOS 上用 python 模块安装 OpenCV 出错
【发布时间】:2013-09-10 22:02:33
【问题描述】:

当我运行这个命令来安装带有 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

【问题讨论】:

    标签: python linux opencv cmake centos


    【解决方案1】:

    我回答我自己的问题。 希望遇到同样问题的人在短时间内找到解决方法。

    1.首先,使用yum更新所有的包 我在安装 OpenCV 时遇到了几个归因于依赖问题的错误。

     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
    

    就是这样。

    【讨论】:

    • 您可以使用-D CMAKE_BUILD_TYPE=RELEASE -D MAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON 而不是所有单独的python 值(无论如何这适用于OpenCV 2.4.9)。
    • 您可能希望在新版本的 OpenCV 上使用 -DPYTHON2_* 前缀而不是 -DPYTHON_*。
    • @Anderson 我在 centos 上有类似的问题 Opencv 3.0 ,得到make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... Linking CXX shared library ../../lib/libopencv_photo.so [ 41%] Built target opencv_photo make: *** [all] Error 2 你能推荐我吗
    猜你喜欢
    • 2014-09-20
    • 2015-03-26
    • 1970-01-01
    • 2021-03-31
    • 2016-02-21
    • 2013-03-23
    • 2016-03-06
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多