为什么在使用ndk-build构建ffmpeg时会发生错误?

时间:2014-03-25 08:17:06

标签: android android-ndk ffmpeg

我已尝试在Windows 7中为Android构建ffmpeg,但在ndk-build时出错。

错误日志如下所示:

Wun@Wun-PC ~/ffmpeg/jni/ffmpeg
$ ndk-build
SharedLibrary  : libffmpeg.so
C:/cygwin/home/Wun/ffmpeg/obj/local/armeabi/libavcodec.a(log2_tab.o):(.rodata+0x0): multiple definition of `ff_log2_tab'
C:/cygwin/home/Wun/ffmpeg/obj/local/armeabi/libavformat.a(log2_tab.o):(.rodata+0x0): first defined here
C:/cygwin/home/Wun/ffmpeg/obj/local/armeabi/libavutil.a(log2_tab.o):(.rodata+0x0): multiple definition of `ff_log2_tab'
C:/cygwin/home/Wun/ffmpeg/obj/local/armeabi/libavformat.a(log2_tab.o):(.rodata+0x0): first defined here
collect2: ld returned 1 exit status
/home/Wun/android-ndk-r8b/build/core/build-binary.mk:378: recipe for target '/home/Wun/ffmpeg/obj/local/armeabi/libffmpeg.so' failed
make: *** [/home/Wun/ffmpeg/obj/local/armeabi/libffmpeg.so] Error 1

我已经删除了 OBJS-$(CONFIG_SHARED) += log2_tab.oMakefile libavformatlibavcodec

但问题仍然存在......

我应该删除libavcodec.a , libavformat.a , libavutil.a and libswscale.a,然后再重建一次吗?

有人知道如何解决这个问题吗?

提前致谢。


1 个答案:

答案 0 :(得分:1)

在交叉编译方案中,此问题不止一次reported

这是一个configuration problem。对于gcc,你应该运行

./configure … --extra-cflags="-DHAVE_ISNAN -DHAVE_ISINF"

您也可以将其添加到 Android.mk

LOCAL_CFLAGS += "-DHAVE_ISNAN -DHAVE_ISINF"

由于您未运行./configure您可以编辑config.h文件并设置这两个文件:

#define HAVE_ISNAN=1
#define HAVE_ISINF=1