使用Android NDK为x86编译FFmpeg 3.1.1

use*_*481 3 c c++ android ffmpeg android-ndk

最新版本FFmpeg3.1.1.版本后3.1,我不能编译FFmpegx86.(但3.0.2或更早的版本可以被编译.)

终端显示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
Run Code Online (Sandbox Code Playgroud)

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

它只有当我编译发生FFmpegx86.ARM建筑还可以.

小智 9

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

  • @Dave你救了我的命,大概是6个小时. (2认同)