静态库链接编译ffmpeg自带的examples中的filtering_video.c,
报错:
......libavfilter/asrc_sinc.c:393: undefined reference to `av_rdft_end'
找了很多帖子,由于我的是C++环境,使用cmake编译,所以先在include那加了extern “C”{ },但是不起作用,看了ffmpeg里examples的makefile,改了包含库的先后顺取,有点用,但还是报错。
我一直担心是我编译安装的ffmpeg版本和代码不匹配,后来想想不是,安装包里带的示例,不至于出这种错误,然后想是不是编译ffmpeg的时候少东西了,又重新编译安装,然并卵,还是报错。后来放弃静态库,编译动态库并安装(--enable-shared),然后在cmake中添加lib*.so动态库,结果奇迹般的编过了。但是,运行又报错。
原来是没有该配置文件,vi /etc/ld.so.conf,在做后加上/usr/local/lib,再/sbin/ldconfig -v使其生效,至此运行也成功了。特此记录一下,免得自己以后遇到同样的问题还得找好久,也希望能帮助其他遇到同类问题的人。
标注:解决办法即是 --> ffmpeg编译动态库,改调用静态库为调用动态库。
有时间再继续研究静态库为啥报错。