在Ubuntu 11.10上编译OpenCV2.3.1时出现奇怪的链接器错误

前端之家收集整理的这篇文章主要介绍了在Ubuntu 11.10上编译OpenCV2.3.1时出现奇怪的链接器错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试按照 here所述的指令在Ubuntu 11.10上编译OpenCV版本2.3.1.我收到了以下错误.无法理解发生了什么… /usr/local/lib/libavcodec.a存在但链接器无法链接它或其他东西?

错误

[ 20%] Built target pch_Generate_opencv_highgui
Linking CXX shared library ../../lib/libopencv_highgui.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32S against `av_destruct_packet' 
can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
问题是您正在尝试将libopencv_highgui.so与libavcodec.a链接.后者是从没有-fPIC编译的代码构建的(这很常见),并且这些代码无法链接到x86_64上的共享库.

你的选择是:

>获取libavcodec.so并安排链接,或
>完全从链接行中删除libavcodec或-lavcodec.

首先,您很可能只需要安装libavcodec-dev包.

如果你做第二个,你仍然需要安排libopencv_highgui.so需要libavcodec的符号才能在运行时可用.您可以通过将主可执行文件与libavcodec(存档或共享变体)链接来实现.

猜你在找的Ubuntu相关文章