花了一整天的时间,终于编译通过了。 最大的问题,就是ndk的版本和ffmpeg的版本要对应上,尝试过master,release/3.4, release/3.3, release/3.2, release/3.1,ndk-bundle, ndk-r10e各种交配,错误也是各种样式。不要去关注,stdlib.h找不到,文件not executable,macro找不到,和你没关系。
- ffmpeg的下载 下载好版本切到release/3.1
- 修改configure文件
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' SLIB_INSTALL_LINKS='$(SLIBNAME)'复制代码
-
下载ndk-r10e
-
在ffmpeg目录下编写编译脚本文件build_android.sh
#!/bin/bashNDK=/Users/yangjing/Library/android-ndk-r10eSYSROOT=$NDK/platforms/android-21/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64function build_one(){./configure \--prefix=$PREFIX \--enable-shared \--disable-static \--disable-doc \--disable-ffserver \--enable-cross-compile \--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \--target-os=linux \--arch=arm \--sysroot=$SYSROOT \--extra-cflags="-Os -fpic $ADDI_CFLAGS" \--extra-ldflags="$ADDI_LDFLAGS" \$ADDITIONAL_CONFIGURE_FLAG}CPU=armPREFIX=$(pwd)/android/$CPUADDI_CFLAGS="-marm"build_onemakemake install复制代码
- 运行./build_android.sh, 可能需要权限chmod 777 build_android.sh
- so会在ffmpeg目录下生成,位于android/arm/*