使用 Android NDK 为 x86 编译 FFmpeg 3.1.1

Compiling FFmpeg 3.1.1 for x86 using Android NDK

本文关键字:FFmpeg 编译 x86 Android NDK 使用      更新时间:2023-10-16

最新版本的FFmpeg3.1.1。版本3.1之后,我无法为x86编译FFmpeg。(但可以编译3.0.2或更早的版本。

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

我的操作系统Xubuntu 14.04 x86 x86_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} 是运行 --install-dir make-standalone-toolchain.sh 时用于选项的目录路径这是 Android NDK 中的一个工具。

它只发生在我为x86编译FFmpeg时。 ARM架构还可以。

我遇到了同样的问题并找到了解决方法。 确保删除"compat/strtod.o"和"compat/strtod.d",如果你以前为另一个架构构建。 出于某种原因,如果您在 3.1.1 中更改架构,这些不会重建,但它在以前的版本中运行良好。 您还应该在构建之前进行"清洁"。