首页 > 网络资讯 > 技术支持 >
CentOS 7.1 编译opencv3.1+ffmpeg
分享至:0
2016-07-04 16:27:47     来源:     点击:
导读: 【北京云主机产业基地,长期提供:北京云主机、北京电信云主机、北京联通云主机、北京双线云主机、广东电信云主机、香港免备案云主机、韩国... 【北京云主机产业基地,长期提供:北京云主机、北京电信云主机、北京联通云主机、北京双线云主机、广东电信云主机、香港免备案云主机、韩国免备案云主机】

名目需求正在效劳器上带ffmpeg意译opencv 3.1,事先只正在windows上用过opencv,意译过一次苦楚的很,因为这次办好了充专心理预备。

 

意译ffmpeg

1.率先去键入源码,放正在/ffmpeg节目下

2.修正config,由于没sudo权限,因为默许装置门路要改,意译opencv要调用静态库,因为要加shared项(很坑啊第一次没减轻正编的)

./configure --enable-shared --prefix=./install

 

3.make

而后又出错,shared的锅

 

  1. /usr/bin/ld: libavcodec/mqc.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
  2. libavcodec/mqc.o: error adding symbols: Bad value
  3. collect2: error: ld returned 1 exit status
处理办法是

 

 

  1. config.mak L75退出 -fPIC,从新意译
  2. HOSTCFLAGS=-O3 --std=c99 -Wall -fPIC (次第能够没有一样)

 

这次经过,而后

make install

实现。

 

意译opencv

1.下源码

2.cd ./opencv/

mkdir build

cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=./install ..

会显现配置选项,ffmpeg正常默许是yes

3.make

出错

 

/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: could not read symbols: Bad value
神坑啊,听说是opencv的bug,出正在libavcodec.a联接静态库的进程,正在这给出3个处理办法(你就晓得我正在这卡了多久):

 

(1)如上所述,意译ffmpeg的时分加shared选项

(2)安装CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC",但是我试的时分并没有好使

(3)把libavformat.a libavutil.a libavcodec.a libswscale.a从/usr/local/lib(就ffmpeg的库节目)删掉,意译完opencv再放回去

最初处理我成绩的是(1)(3) 

而后make&&make install

实现

 

只写了要害的方法细致进程可参考

http://blog.csdn.net/jinatom/article/details/7982612

【1元云购云主机,次月半价续费,云主机首月只要1元,次月半价续费,北京云主机产业基地为您提供全国各地云主机vps服务器,客服电话400-676-2468】