使用Android编译FFmpeg 3.1.1 for x86 NDK

问题描述:

最新版本的FFmpeg3.1.13.1版本后,我不能编译FFmpegx86。(但3.0.2或更早的版本可以被编译。)使用Android编译FFmpeg 3.1.1 for x86 NDK

终端显示ld: error: libavutil/../compat/strtod.o: incompatible target

我的操作系统是Xubuntu 14.04 x86x86_64。(我已经试过他们两个。)

NDK版本是r10e(x86)r12b(x86_64)

当我编译FFmpeg 3.0.2时,它没有错误。

这是我的配置:

./configure \ 
--prefix="${PREFIX}" \ 
--enable-shared \ 
--disable-static \ 
--disable-doc \ 
--disable-ffplay \ 
--disable-ffprobe \ 
--disable-ffserver \ 
--cross-prefix="${PREFIX}/bin/i686-linux-android-" \ 
--target-os=linux \ 
--arch=x86 \ 
--enable-cross-compile \ 
--sysroot="${PREFIX}/sysroot" \ 
--extra-cflags="" \ 
--extra-ldflags="" \ 
--extra-libs="" \ 
--disable-debug 

${PREFIX}是用于在运行make-standalone-toolchain.sh--install-dir选项,这是Android的NDK工具的目录路径。

它只发生在编译FFmpegx86ARM建筑是好的。

我遇到了同样的问题,并找到了解决方法。如果您以前为其他体系结构构建过,请务必删除“compat/strtod.o”和“compat/strtod.d”。出于某些原因,如果您在3.1.1中更改体系结构,则不会重新构建这些体系结构,但它在以前的版本中运行良好。你应该在建造之前做一个“干净的”。

+0

你解决了我的问题。谢谢〜 – user3032481

+2

@Dave你救了我的命,大概6个小时吧。 –

+0

我在我的脚本“rm compat/strtod.o rm compat/strtod.d”中这样做了,现在我不必担心这个问题,很烦人,说实话不容易搞清楚,谢谢 – Diljeet