现在的位置: 首页 > 综合 > 正文

编译ffmpeg出现的问题

2019年11月20日 ⁄ 综合 ⁄ 共 786字 ⁄ 字号 评论关闭

编译ffmpeg出现的问题:

按照Scott所写的增加系列mk文件以及对libm.h进行修改,并生成及修改config.h后,开始尝试编译,一直到最后链接时出现以下的问题:

/home/chf0001/android-ndk/android-ndk-r5/samples/ffmpeg/obj/local/armeabi/libavutil.a(inverse.o):(.rodata+0x0): multiple definition of `ff_inverse'

/home/chf0001/android-ndk/android-ndk-r5/samples/ffmpeg/obj/local/armeabi/libavcodec.a(inverse.o):(.rodata+0x0): first defined here

查看后发现:

在目录libavcodec下有文件inverse.c,内容为:

#include "libavutil/inverse.c"

而libavutil下的inverse.c中定义了变量ff_inverse,所以在libavutil.a与libavcodec.a中都存在变量ff_inverse的定义,当这二个文件一起链接成libffmpeg.so时,就出现了上面的问题。

了解了原因,解决办法就很简单,直接修改libavcodec/Makefile,把下面一行删掉:

OBJS-$(!CONFIG_SMALL)                  += inverse.o

那么这是不是ffmpeg的一个问题呢?应该不是,因为它的编译目标为libavutil.so, libavcodec.so,也就是说都是独立的小的so文件,而我们这边是最终产生一个统合的文件libffmpeg.so,其中包含了libavutil.a, libavcodec.a, 所以才产生了以上的问题。

抱歉!评论已关闭.