And*_*son 1 python linux opencv centos cmake
当我运行此命令以使用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
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息.
/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
Run Code Online (Sandbox Code Playgroud)
我无法理解错误和错误信息.
有人能告诉我这有什么问题吗?
顺便说一句,我的操作系统是CentOS.
我使用Python2.7.5
我回答我自己的问题.希望遇到同样问题的人能在短时间内找到解决问题的方法.
1.首先,使用yum更新所有pagackages我在安装OpenCV时遇到了几个归因于依赖性问题的bug.
sudo yum update --skip-broken
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
现在你可能得到"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
Run Code Online (Sandbox Code Playgroud)
就这样.
| 归档时间: |
|
| 查看次数: |
4472 次 |
| 最近记录: |