【发布时间】:2015-05-11 17:27:02
【问题描述】:
我正在尝试使用
中提供的文档将 opencv 安装到我的 Ubuntu 14.04 机器上但是,在编译过程中出现以下错误。
Linking CXX shared library ../../lib/libopencv_videoio.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [lib/libopencv_videoio.so.3.0.0] Error 1
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
make: *** [all] Error 2
我注意到一些帖子提到了类似的错误,一些解决方案建议从 /usr/local/lib/ 中删除 libavcodec.a。我不想这样做,因为我也需要机器中的 ffmpeg 库。
有人可以帮我解决这个问题吗?
谢谢
【问题讨论】:
-
您是否尝试过错误消息“使用 -fPIC 重新编译”中的建议?
-
是的。我尝试通过添加 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC" ) 来编辑 cmake 列表文件。但这没有用。我还尝试使用 --enable-shared 重新编译 ffmpeg。但这也没有奏效。
-
您是否尝试从文件夹 /usr/local/lib 中删除 libavcodec.a 然后重新运行编译?您可以将 libavcodec.a 移动到其他地方,然后在完成 opencv 编译后将其放回 /usr/local/lib。
-
我必须从 /usr/local/lib 中删除 libavformat.a libavutil.a libavcodec.a libswscale.a 然后编译 opencv。然后将删除的文件复制回该位置。它似乎奏效了。非常感谢您的帮助。
-
很高兴它可以工作。玩得开心! :-)