我正在尝试安装带有python支持的opencv,但遇到了我无法解决的问题。
当我使用cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
配置项目时,它会配置并说存在python支持。
-- Python:
-- Interpreter: /usr/local/bin/python2 (ver 2.7.10)
-- Libraries: /usr/local/lib/libpython2.7.a (ver 2.7.10)
-- numpy: /usr/local/lib/python2.7/site-packages/numpy/core/include (ver 1.9.2)
-- packages path: lib/python2.7/site-packages
当我尝试
make
时,它在以下位置失败[ 75%] Built target opencv_test_contrib
Linking CXX shared library ../../lib/cv2.so
/usr/bin/ld: /usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/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
没有python支持,它的构建就很好。
我不了解此错误的含义/如何解决此问题,因为我对cmake的经验不足。调试的任何帮助表示赞赏。
最佳答案
如错误所述,您需要使用“-fPIC”标志重新编译。一些研究提出了简单的解决方案。将命令添加到-D CMAKE_C_FLAGS=-fPIC
,这样您的整个命令就是cmake -D CMAKE_C_FLAGS=-fPIC -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
请让互联网上的其他人知道这是否有效。
关于python - 使用python支持错误编译opencv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31390876/