【问题标题】:opencv installation error ubuntuopencv安装错误ubuntu
【发布时间】:2015-05-11 17:27:02
【问题描述】:

我正在尝试使用

中提供的文档将 opencv 安装到我的 Ubuntu 14.04 机器上

http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation

但是,在编译过程中出现以下错误。

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。然后将删除的文件复制回该位置。它似乎奏效了。非常感谢您的帮助。
  • 很高兴它可以工作。玩得开心! :-)

标签: c++ opencv ubuntu


【解决方案1】:

只需在您的终端/环境中运行这两行代码:

pip install opencv-python==3.4.5.20
pip install opencv-contrib-python==3.4.5.20

【讨论】:

    【解决方案2】:

    我让它工作(用于安装 ffmpeg),只需从头开始重新安装整个东西,将 $ ./configure 的所有实例替换为 $ ./configure --enable-shared(首先确保删除所有文件夹和文件,包括 .so 文件从之前的尝试)。

    显然这是因为https://stackoverflow.com/a/13812368/10593190

    这与@camino 对https://stackoverflow.com/a/19365454/10593190XavierStuvw's answer 的评论相符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      相关资源
      最近更新 更多