libavcodec.a(hevc_cabac.o): relocation R_X86_64_PC32 against `ff_w_ff' can not be used when makin with -fPIC
libavcodec属于ffmpeg的库,从ff_w_ff这个标志就可以看的出来
这个原因是因为opencv想要加载动态库但是libavcodec为静态库,因为没有加-fPIC的原因,注意这里不是让你去修改opencv的cmake附加参数,加上-fPIC,这个是不行的,我们需要重新编译ffmpeg的库,给ffmpeg的make加上-fPIC这个参数
git下载:
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
git比较慢,可以使用码云:
https://gitee.com/ChinaFFmpeg/ffmpeg
下载好后放到你的ubnutu上
使用unzip命令解压到你的工作目录
unzip ffmpeg.zip
然后cd命令进入ffmpeg目录:
cd ffmpeg
使用如下命令配置生成make
sudo ./configure --enable-nonfree --enable-pic --enable-shared
这里--enable-pic 代表会使用-fPIC
在使用make编译与安装
sudo make && sudo make install
然后在去重新编译你的opencv即可!