我按照在线说明在Centos中安装OpenCV 2.4.11。但是我在make && make install
的步骤中遇到了错误。
这是:
Linking CXX shared library ../../lib/libopencv_core.so
/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/4.4.7/libstdc++.a(ctype.o): relocation R_X86_64_32S against `vtable for std::ctype<wchar_t>' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/libstdc++.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [lib/libopencv_core.so.2.4.11] Error 1
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
make: *** [all] Error 2
有人知道我libstdc++.a
的错误吗?
答案 0 :(得分:1)
基于错误消息,我认为问题是你的静态libstdc ++是在没有-fPIC选项的情况下编译的,所以ld不想用它来创建一个共享对象。
-fPIC选项生成与位置无关的代码,该代码具有额外的信息,可以将其映射到不同的内存地址而无需更改(这就是当您尝试使用非位置代码创建共享对象时ld抱怨的原因 - 独立的)。
您可以通过获取(或构建)使用-fPIC构建的libstdc ++来解决此问题。