使用ubuntu14和ndk 编译ffmpeg在android平台的so动态库
1 安装unbuntu14环境
2 下载LINUX环境下的ndk(http://blog.****.net/gyh198/article/details/75036686)
如果下载的ndk文件时xxx.bin格式,终端直接进入该文件所在的目录
chmod +x ./xxx.bin
./xxx.bin
执行完毕后就可以生成可正常使用的ndk环境
3 去ffmpeg官网下载源码,解压至ndk所在的目录
以上三步操作的结果如下图:
4 进入ffmpeg-3.0.10目录
(1) 修改configure文件,替换一下内容:
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'
修改为
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
(2)创build_android.sh脚本文件
#!/bin/bash
NDK=/home/wcf/Downloads/android-ndk-r10e
SYSROOT=$NDK/platforms/android-21/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86
TOOLCPU=arm-linux-androideabi
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
ADDI_LDFLAGS="-lm -lz -Wl,-soname=libffmpeg.so,-z,noexecstack"
function build_one
{
./configure --target-os=linux --prefix=$PREFIX\
--enable-cross-compile\
--enable-runtime-cpudetect\
--disable-asm\
--arch=$CPU\
--cc=$TOOLCHAIN/bin/$TOOLCPU-gcc\
--cross-prefix=$TOOLCHAIN/bin/$TOOLCPU-\
--enable-stripping\
--nm=$TOOLCHAIN/bin/$TOOLCPU-nm\
--sysroot=$SYSROOT\
--enable-gpl --enable-shared --disable-static --enable-small\
--enable-zlib --disable-ffprobe --disable-ffplay --disable-ffmpeg\
--disable-ffserver\
--extra-cflags="-I$SYSROOT/usr/include"\
--extra-ldflags="$ADDI_LDFLAGS"\
$ADDITIONAL_CONFIGURE_FLAG
}
build_one
(3)终端执行build_android.sh文件
chmmod +x build_android.sh
make
make install