编译带有Python支持的OpenCV出现错误

3
我正在尝试安装带有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重新编译”? - Mark Miller
我不理解如何在cmake构建系统中使用-fPIC。 - Anoop
@upr 你找到这个错误的解决方案了吗?我也遇到了同样的错误。 - seleucia
你们中有人找到解决方案了吗? - Marvin
1个回答

0

如错误所述,您需要使用“-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 ..

如果这行得通,请让其他人知道。


嗨@Mark。即使在cmake配置步骤中添加了-D CMAKE_C_FLAGS=-fPIC,它仍然以相同的消息失败。我认为这是一些特定于opencv的问题。 - Anoop
可能不是这样的;我的回答只是瞎猜。我不确定C标志是否传递到编译过程中。你能否在输出中使用grep查找fPIC? - Mark Miller
我在cmake的发布文件夹中使用grep查找了fpic,这是输出结果http://pastebin.com/CZb1Hj5j。-fPIC肯定会传递到编译中。 - Anoop
由于文件编译为c++,标志是CMAKE_CXX_FLAGS。尝试使用它们进行相同的操作。 - Tsyvarev
即使使用了CMAKE_CXX_FLAGS,问题仍然存在。 - Anoop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接