1、下载 ndk (特定版本)
可能是由于 ndk 版本的问题,目前比较新的版本 21 或者 16b 或者 18b 等等 都会出现这样或者那样的问题(哪些问题,会在最后列出),没有找出解决方法,目前 能编译完全没有错误的版本 是14b,所以现在 用 14b 编译
下载页面:https://developer.android.google.cn/ndk/downloads/
赋值 下载链接(linux版本)(最好在 linux 下载)
https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
进入linux 系统:
mkdir ndk_build
cd ndk_build
wget https://dl.google.com/android/repository/android-ndk-r21-linux-x86_64.zip
unzip android-ndk-r21-linux-x86_64.zip
配置NDK
vim ~/.bashrc #进入环境变量配置
export NDKROOT=/home/adminuser/ndk_build/android-ndk-r21 #配置你的安装路径
export PATH=$NDKROOT:$PATH #配置路径
:wq! #保存退出
source ~/.bashrc #执行环境变量
ndk-build #查看是否安装成功,只要不是显示ndk-build not found,则表示安装成功
2、下载 ffmpeg(特定版本)
注意:可能是由于 ffmpeg 版本的问题,目前比较新的版本 4.2 或者 4.2.3 或者 4.1.1 等等 都会出现这样或者那样的问题(哪些问题,会在最后列出),没有找出解决方法,目前 能编译完全没有错误的版本 是 2.6.9 和 2.7.7,所以现在 用 2.6.9 编译
wget https://ffmpeg.org/releases/ffmpeg-2.6.9.tar.gz
tar -jxvf ffmpeg-2.6.9.tar.gz
cd ffmpeg-2.6.9.tar.bz2
vim android_build.sh
在 android_build.sh 文件中输入以下内容:
#!/bin/bash
make clean
#export TMPDIR="/root/ndk-build/ffmpeg-4.2.3/ffmpegtemp" #ffmpegtemp 需要提前手动创建
export NDK=/root/ndk-build/android-ndk-r14b
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"
./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
3、修改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)'
4、执行以下命令:
chmod +x android_build.sh
./android_build.sh
编译其他版本的ffmpeg 出现 的错误如下:
1)
/home/adminuser/ndk-build/android-ndk-r21/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.