Ubuntu14.04 64位系统下安装python3.4对应的opencv3.0报错recompile with -fPIC 的解决办法

原创 2016年06月18日 23:54:33

之前的Ubuntu14.04 64位系统下安装了ffmpeg,后来由于需要使用安装在python3.4环境下可以使用的python视觉库opencv3.0,下面是安装过程中遇到的一些问题。

首先。

1、对于windows7 64位下安装opencv3.0可以参考本人的这篇文章:Windows7 64位+python3.4环境下安装opencv3.0的方法

2、对于Ubuntu 14.04 64位环境下安装opencv3.0可以参考这篇文章:Ubuntu14.04 64位+Python3.4环境下安装opencv3.0的方法

这里之所以再次提出为什么要在Ubuntu环境下安装opencv3.0呢?似乎看上去与“2”重复了啊,其实不是,由于各种实际项目开发问题,往往我们在安装opencv3.0的时候,环境已经不是如“2”中所说的纯净环境了,比如已经安装了ffmpeg,这时候会报如下错误:

[ 38%] Building CXX objectmodules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o

Linking CXX shared library../../lib/libopencv_videoio.so

/usr/bin/ld: cannot find -lavcodec

/usr/bin/ld:/usr/local/lib/libavutil.a(log.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/libavutil.a: error addingsymbols: 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


因此,我们的目的就是如何在环境中已经安装ffmpeg的基础上能够成功安装opencv3.0。

我的解决过程如下:

步骤1:由于我的环境中ffmpeg是通过下载源码后自己编译生成,因此先进入到ffmpeg的目录,然后执行如下命令来卸载ffmpeg

sudo make uninstall

步骤2:执行如下脚本

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #!/bin/bash  
  2. sudo apt-get update  
  3. sudo apt-get install python3-setuptools python3-dev -y  
  4. sudo easy_install3 pip  
  5. pip3 install numpy  
  6.   
  7. sudo apt-get install build-essential -y  
  8. sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev -y  
  9.   
  10. cd ~  
  11. wget https://github.com/Itseez/opencv/archive/3.0.0.zip  
  12. #注意这里不是 cd 3.0.0  , 而是 cd opencv-3.0.0  
  13. unzip 3.0.0.zip && cd opencv-3.0.0  
  14. mkdir build && cd build  
  15.   
  16. cmake -D CMAKE_BUILD_TYPE=Release \  
  17. -D CMAKE_INSTALL_PREFIX=/usr/local  \  
  18. PYTHON3_EXECUTABLE=/usr/bin/python3 \  
  19. PYTHON_INCLUDE_DIR=/usr/include/python3.4 \  
  20. PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.4m.so \  
  21. PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.4/dist-packages/numpy/core/include ..  
  22.   
  23. # make -j [N] :表示在那个一时间内进行编译的任务数 ,如果-j 后面不跟任何数字,则不限制处理器并行编译的任务数,现在发现直接用make -j4 安装会失败  
  24. #所以还是用 make -j1 成功了  
  25. make -j1  
  26. sudo make install  
成功。

注意:一定要记得在执行完 上述脚本中第25行的 "make -j1" 后,要记得执行 "sudo make install"。

验证安装成功的方法是:

执行如下命令进入python3交互环境

python3

执行如下命令

import cv2

如果没有输出,表明opencv3.0安装成功



这里附上另一个解决办法给大家参考,希望给大家一些启示。但是对于我而言,并没有成功。

原文地址:http://stackoverflow.com/questions/28960944/opencv-installation-error-ubuntu


I'm trying to install opencv to my Ubuntu 14.04 machine using the documentation provided in

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

However, during the compilation process I get the following error.

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

I noticed a few posts mentioning similar errors and some solutions suggest removing the libavcodec.a from /usr/local/lib/. I'd like not to do that as I need ffmpeg libraries in the machine as well.

Could someone please help me to resolve this issue?.

Thanks

shareimprove this question
 
 
Did you try the suggestion in the error message 'recompile with -fPIC' ? – Ha Dang Mar 10 '15 at 10:15
 
Yes. I tried editing the cmake list file by adding set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC" ). But that didn't work. I also tried to recompile ffmpeg with --enable-shared. But that didn't work as well. – userDtrm Mar 10 '15 at 11:48
 
Did you try to remove the libavcodec.a from the folder /usr/local/lib then rerun the compilation? You can move libavcodec.a to somewhere else then put it back to /usr/local/lib once you've done with opencv compilation. – Ha Dang Mar 10 '15 at 12:08
 
I had to remove libavformat.a libavutil.a libavcodec.a libswscale.a from /usr/local/lib and then compile opencv. Then the removed files were copied back to the location. It seems to have worked. Thanks a lot for the help. – userDtrm Mar 10 '15 at 18:14 
 
Glad that it works. Have fun OpenCV-ing! :-) – Ha Dang Mar 10 '15 at 21:36

Ubuntu14.04 64位+Python3.4环境下安装opencv3.0的方法

折腾了估计得有1个星期,终于把opencv安装好了。     安装的过程主要是参考了这篇文章:https://github.com/rainyear/lolita/issues/18    但是实际安...
  • qingyuanluofeng
  • qingyuanluofeng
  • 2016年06月01日 19:09
  • 10270

Ubuntu16.04 python3.5.2 install OpenCV3

之前初学了python3,在Ubuntu中想安装opencv,可是搭建环境的时候还是出现了很大的问题,头疼不已。最近数字图像处理的课老师布置了大作业,我就想试试看用python3.5.2+opencv...
  • fanzhiyi521
  • fanzhiyi521
  • 2016年12月04日 20:25
  • 4081

opencv的安装

先下载到1.opencv和2.opencv_contrib,直接放在系统目录下 然后开始安装: sudo apt-get install build-essential sudo apt-get i...
  • jingtingxu369
  • jingtingxu369
  • 2016年10月31日 20:46
  • 1460

codeblocks-MinGW-4.8.1+opencv3.0+cmake遇到的问题及解决办法

首先设置环境变量,包含mingw的一些路径,minGW路径为E:\CodeBlocks\MinGW Include :E:\CodeBlocks\MinGW\include; Lib:E:\CodeB...
  • wchyumo2009
  • wchyumo2009
  • 2015年09月08日 09:54
  • 9519

(更新v2018.1.24版)Opencv Qt 学习笔记(一)安装qt opencv 环境Win7(cmake3.9.1和Opencv3.3.0)

开始配置: 1.下载所需工具: (1) Qt: https://download.qt.io/official_releases/ (2) OpenCV: http://opencv.o...
  • qq_26625581
  • qq_26625581
  • 2017年08月31日 11:23
  • 1210

Ubuntu 编译opencv出错:‘GstMiniObjectClass’ does not name a type 解决方法

由于毕业设计是计算机视觉项目。我选择使用Python+OpenCV的平台来完成,因为多练习Python也有利于以后研究生阶段机器学习的研究。 我有点技术洁癖:(,本来电脑已经有OpenCV了,硬是想更...
  • jdpshq
  • jdpshq
  • 2015年05月05日 12:12
  • 3176

ubuntu找不到库编译问题的解决

出现的问题: g++ -O3 -Wno-unused-result -fopenmp -msse2 XXX.o main.o -o main /usr/local/lib/libopencv_ca...
  • xmzwlw
  • xmzwlw
  • 2015年06月17日 16:40
  • 1502

Ubuntu14.04 Anaconda(python3.6)安装tensorflow (报错:undefined symbol: zgelsd_; is not a supported wheel等

本来安装tensorflow是一件无比简单的事,但在我的电脑上却装了一个星期。期间遇到各种麻烦事、各种坑,在此记录一下,方便大家。报错包括: undefined symbol: zgelsd_ Imp...
  • MichaelLiang12
  • MichaelLiang12
  • 2017年03月03日 09:05
  • 9264

ubuntu16.04安装opencv3.4.0教程

最近opencv3.4.0发布了,想换个新的试试鲜,于是把配置的过程通过博文的方式记录下来,方便查阅。 1.去官网下载opencv,在本教程中选用的时opencv3.4.0,其他版本的配置方法异曲...
  • cocoaqin
  • cocoaqin
  • 2017年10月05日 22:11
  • 4687

Ubuntu14.04安装OpenCV3.0

1、下载 opencv-3.0.0..zip 2、移除之前安装的 ffmpeg 和x264: sudo apt-get -y remove ffmpeg x264 libx264-dev 3、安...
  • feelingjun
  • feelingjun
  • 2017年07月19日 09:29
  • 636
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ubuntu14.04 64位系统下安装python3.4对应的opencv3.0报错recompile with -fPIC 的解决办法
举报原因:
原因补充:

(最多只允许输入30个字)