编译环境:Ubuntu 16.04_amd64
注意:一定要是64位系统,否则编译时会出现/home/XXX/Work/Android/android-ndk-r17/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc is unable to create an executable file.
C compiler test failed这个错误
一、软件包安装路径:
ffmpeg: https://pan.baidu.com/s/1F8cpcqcMWNjHGm5QoweMJw
Android Ndk(x86_64bit):https://pan.baidu.com/s/15ORTCwzQ9jiVOhhTKQGTlw
二、Android NDK安装
1.压缩包直接解压
2.更改~/.bashrc文件,在文件最后末尾追加
export NDK_HOME="home/XXX/work/android/android-ndk-r9d"
export PATH = $PATH:$NDK_HOME
3. sudo source ~/.bashrc
4. 终端输入ndk-build如果可以找到,说明ndk已经安装成功
三、ffmpeg安装
1.压缩包直接解压
2.更改configure文件,保证生成的so按照Android的标准,文件名以.so结尾
+SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
+LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
+SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
+SLIB_INSTALL_LINKS='$(SLIBNAME)'
3.创建ffmpeg编译脚本
#!/bin/bash
export NDK=/home/XXX/work/android/android-ndk-r9d #ndk目录
SYSROOT=$NDK/platforms/android-14/arch-arm/ #编译时头文件和lib文件寻找路径TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64 #编译工具链
CPU=arm #cpu类型
PREFIX=./android/$CPU #编译生成路径
ADDI_CFLAGS="-marm"
config_para()
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
config_para
四、编译ffmpeg
sudo ./build_android.sh
编译后会在android目录下生对应的so和头文件