ffmpeg编译成一个Android libffmpeg.so库

update 2018: 

生成工具链

# NDK version = 14
# cd $NDK_DIR

INSTALL_DIR=/home/konga/bin

ARM_TOOLCHAIN="arm-linux-androideabi-4.9"
ARM64_TOOLCHAIN="aarch64-linux-android-4.9"

make_toolchain_from_ndk()
{

rm -fr $INSTALL_DIR/$ARM_TOOLCHAIN
build/tools/make-standalone-toolchain.sh --arch=arm --platform=android-21 --install-dir=$INSTALL_DIR/$ARM_TOOLCHAIN 

rm -fr $INSTALL_DIR/$ARM64_TOOLCHAIN
build/tools/make-standalone-toolchain.sh --arch=arm64 --platform=android-21 --install-dir=$INSTALL_DIR/$ARM64_TOOLCHAIN


$INSTALL_DIR/$ARM_TOOLCHAIN/bin/${ARM_TOOLCHAIN%-*}-gcc --version
echo 
$INSTALL_DIR/$ARM64_TOOLCHAIN/bin/${ARM64_TOOLCHAIN%-*}-gcc --version

}

make_toolchain_from_ndk 

编译脚本:

TOOL_LIST="arm-linux-androideabi-4.9 aarch64-linux-android-4.9"
#TOOL_LIST="aarch64-linux-android-4.9"

for TOOLCHAIN in $TOOL_LIST ; do 

	TOOL_HOME=/home/konga/bin/$TOOLCHAIN

	CROSS_PREFIX=$TOOL_HOME/bin/${TOOLCHAIN%-*}-

if [ $TOOLCHAIN == "arm-linux-androideabi-4.9" ] ; then
	ARCH=arm
	INSTALL_DIR=./out/armeabi-v7a
	EXTRA_CFLAGS="-march=armv7-a"
	LIBGCC=$TOOL_HOME/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a

elif [ $TOOLCHAIN == "aarch64-linux-android-4.9" ] ; then 
	ARCH=arm64
	INSTALL_DIR=./out/arm64-v8a
	EXTRA_CFLAGS="-march=armv8-a"
	LIBGCC=$TOOL_HOME/lib/gcc/aarch64-linux-android/4.9.x/libgcc.a	
fi


./configure --enable-cross-compile --target-os=linux \
	--arch=$ARCH --cross-prefix=$CROSS_PREFIX \
	--extra-cflags=$EXTRA_CFLAGS \
    --disable-linux-perf \
	--disable-programs --disable-doc --disable-debug \
	--prefix=$INSTALL_DIR


	make clean;
	make V=1 -j8  && make install;

	SYSROOT=$TOOL_HOME/sysroot

	${CROSS_PREFIX}ld \
	-rpath-link=$SYSROOT/usr/lib \
	-L$SYSROOT/usr/lib \
	-L$INSTALL_DIR/lib \
	-soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \
	$INSTALL_DIR/libffmpeg.so \
	$INSTALL_DIR/lib/libavcodec.a \
	$INSTALL_DIR/lib/libavfilter.a \
	$INSTALL_DIR/lib/libswresample.a \
	$INSTALL_DIR/lib/libavformat.a \
	$INSTALL_DIR/lib/libavutil.a \
	$INSTALL_DIR/lib/libswscale.a \
	-lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \
	$LIBGCC

done 

猜你喜欢

转载自blog.csdn.net/konga/article/details/45175659
今日推荐