文章目录
在linux下交叉编译android平台的ffmpeg4.2动态库
环境及版本
-
linux(本人在cestos和ubuntu上测试通过)
- 这里贴一下cestos的内核
[root@bogon lib]# uname -a Linux bogon 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
-
ffmpeg4.2.x
-
ndk r21
编译过程
下载ffmpeg
- 用git下载,这样下载到的是最新版的,我当时最新版是4.2.X
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
- 下载完后打开ffmpeg中的configure文件,搜索android关键字,可以发现如下代码
set_default target_os
if test "$target_os" = android; then
cc_default="clang"
fi
ar_default="${cross_prefix}${ar_default}"
cc_default="${cross_prefix}${cc_default}"
cxx_default="${cross_prefix}${cxx_default}"
nm_default="${cross_prefix}${nm_default}"
pkg_config_default="${cross_prefix}${pkg_config_default}"
if ${cross_prefix}${ranlib_default} 2>&1 | grep -q "\-D "; then
ranlib_default="${cross_prefix}${ranlib_default} -D"
else
ranlib_default="${cross_prefix}${ranlib_default}"
fi
strip_default="${cross_prefix}${strip_default}"
windres_default="${cross_prefix}${windres_default}"
- 我们可以看到当指定target_os为android,cc默认用的是clang编译,而且最后的cc_default都会加上前缀${cross_prefix}的值,其他的还有cxx,nm,ar,ranlib,strip等
- 这里顺便说下我的目录结构,我在ffmpeg目录中创建了build-android/build-android.sh脚本,用于编译
-ffmpeg
- ffbuild
- config.log
- ...
- configure
- ...
- build-android
- build-android.sh
下载ndk
- 用wget下载ndk r21
- 如果没有wget就安装一下,ubuntu下用 apt install wget<