使用环境
- 虚拟机Centos7
- ffmpeg 4.2.2
- NDK版本:android-ndk-r20b
编译步骤参考文章
https://juejin.im/post/6844904039524597773#heading-23
记录一下自己踩过的坑,linux小白
1、NDK版本17之后使用clang编译器,不使用gcc
2、初装linux可能未安装clang编译器,需要先检查下
终端输入clang,若提示 not input file 则已安装
sudo yum install epel-release
sudo yum install clang
安装指导:在CentOS 7上安装clang
3、编译失败进入ffbuild/config.log查看最后一行,提示“/lib64/libc.so.6: version `GLIBC_2.15’ not found”
- 终端命令查看系统支持的版本
strings /lib64/libc.so.6 | grep GLIBC
4、提示找不到"config.mak"等文件
可先执行 ./configure 进行生成,再执行shell脚本
5、需要同时编译多个CPU架构
修改build.sh脚本文件
#!/bin/bash
set -x
# 目标Android版本
API=21
CPU=armv7-a
#so库输出目录
OUTPUT=/root/Desktop/android/$CPU
# NDK的路径,根据自己的NDK位置进行设置
NDK=/root/czb/android-ndk-r20b
# 编译工具链路径
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
# 编译环境
SYSROOT=$TOOLCHAIN/sysroot
function start_build
{
./configure \
--prefix=$OUTPUT \
--target-os=android \
--arch=$ARCH \
--cpu=$CPU \
--enable-asm \
--enable-neon \
--enable-cross-compile \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffplay \
--disable-ffprobe \
--disable-symver \
--disable-ffmpeg \
--sysroot=$SYSROOT \
--cross-prefix=$PREFIX \
--cross-prefix-clang=$PREFIT_CLANG \
--extra-cflags="-fPIC"
make clean all
# 这里是定义用几个CPU编译
make -j12
make install
}
#armv8-a架构
ARCH=arm64
CPU=armv8-a
API=21
PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-
PREFIT_CLANG=$TOOLCHAIN/bin/aarch64-linux-android$API-
OUTPUT=/root/Desktop/android/$CPU
start_build
#armv7-a架构
ARCH=arm
CPU=armv7-a
OUTPUT=/root/Desktop/android/$CPU
API=21
PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-
PREFIT_CLANG=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-
start_build