ndk-r14b
#!/bin/bash
#指定NDK的路径
NDK=/root/ffmpeg/android-ndk-r14b
#指定架构下的SO库和头文件,这里基于android 5.0(21)的arch-arm架构平台下的头文件,库文件,也就是需要调用的安卓的一些库文件
PLATFORM=$NDK/platforms/android-21/arch-arm
#交叉编译工具,用到的不同平台对应的工具集,这里在liunx上做交叉编译则是liunx-x86_64,如果是win则为对应的win
#谁在用: liunx-x86_64, 用在哪: arm-liunx-androideabi,包含了所有的交叉编译工具比如gcc, g++, nm等
TOOLCHAIN=$NDK/toolchains/arm-liunx-androideabi-4.9/prebuilt/liunx-x86_64
function buildFF {
./configure \
--prefix=$PREFIX \ #输出的路径,不解释
--target-os=android \ #目标系统,貌似老版本不指定也行,新版本3.4不指定貌似会报错
--cross-prefix=$TOOLCHAIN/bin/arm-liunx-androideabi- \ #编译的工具链前缀,编译时每个工具都加这么一个前缀
--arch-arm \
--cpu=$CPU \
--sysroot=$PLATFORM \ #指定系统的路径
--extra-cflags="$CFLAG" \
--cc=$TOOLCHAIN/bin/arm-liunx-androideabi-gcc \ #gcc
--nm=$TOOLCHAIN/bin/arm-liunx-androideabi-nm \ #nm符号查看工具
--enable-shared \ #编译成动态库,有些低版本的库名字貌似不太对,需要改,3.4版本后没这个问题了
--enable-runtime-cpudetect \ #
--enable-gpl \
--enable-small \
--enable-cross-compile \
--disable-debug \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-postproc \
--disable-avdevice \
--disable-symver \
--disable-stripping \
$ADD
make
make install
}
#这里假设编译两个版本为例
######################################################################
#编译支持neon和硬编码
#指定给GCC提供的一些参数,动态连接库的参数等
#指定CPU的输出类型
CPU=armv7-a
#输出的路径,当前目录下的anroid路径
PREFIX=./android/$CPU-neon-hard
CFLAG=-I$PLATFORM/usr/include -fPIC -DANDROID -mfpu=neon -mfloat-abi=softfp
ADD="--enable-asm \
--enable-neon \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-hwaccel=h264_mediacodec "
buildFF
###########################################################################
#编译不支持neon和硬编码
#指定CPU的输出类型
CPU=armv7-a
#输出的路径,当前目录下的anroid路径
PREFIX=./android/$CPU
CFLAG=-I$PLATFORM/usr/include -fPIC -DANDROID -mfpu=vfp -mfloat-abi=softfp
ADD=
buildFF
ndk-r21d
#!/bin/bash
NDK=/data/app/android-ndk-r21d
API=21
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
build()
{
./configure \
--prefix=$PREFIX \
--disable-static \
--enable-shared \
--enable-small \
--enable-gpl \
--disable-doc \
--disable-programs \
--disable-avdevice \
--enable-cross-compile \
--target-os=android \
--arch=$ARCH \
--cc=$CC \
--cross-prefix=$CROSS
make clean
make -j4
make install
}
########################################################
#armv7-a
ARCH=armv7
PREFIX=./android/$ARCH
CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang
CROSS=$TOOLCHAIN/bin/arm-linux-androideabi-
build
########################################################
ARCH=arm64
PREFIX=./android/$ARCH
ARCH2=aarch64
CC=$TOOLCHAIN/bin/$ARCH2-linux-android$API-clang
CROSS=$TOOLCHAIN/bin/$ARCH2-linux-android-
build