我是在window 7系统上开发的,总之问题多多,查了很多的博客,按照别人的一步一步来都不行,ndk试过r9的,没成功,后面换成了r10的,虽然步骤很简单 ,但是整整弄了三天,直到今天才编译出.so文件,真心有点小激动。
1.准备:
(1) vmware 12.1.1.6932。
http://sw.bos.baidu.com/sw-search-sp/software/d34ff7ffac8/VMware-workstation_full_12.1.1.6932.exe
(2)ubuntu-16.04-desktop-amd64。
http://cn.ubuntu.com/download/
(3)android-ndk32-r10b-linux-x86_64.tar.bz2
http://wear.techbrood.com/tools/sdk/ndk/index.html
(4)ffmpeg-3.1.2.tar.bz2
https://ffmpeg.org/download.html
2.安装好vmware,创建虚拟机,不知道的可以网上查 ,很多相关教程。
进入到ubuntu系统下面,默认有个火狐浏览器,下载好nkd和ffmpeg压缩包文件。创建一个文件,把ndk和ffmpeg解压到改文件夹下面。
解压命令:
tar jxvf FileName.tar.bz2
解压后就是这样子的,解压有我把ffmpeg-3.1.2改成了ffmpeg,感觉等一下敲命令的时候可以容易点。
3.打开ffmpeg文件夹,修改里面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.在ffmpeg文件下,新建一个build_android.sh文件,填写如下内容:
#!/bin/bash
NDK=/home/lwm/lwm/android-ndk-r10b
SYSROOT=$NDK/platforms/android-L/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=arm
PREFIX=../simplefflib
ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--enable-small \
--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
}
build_one
其中需要改成你自己的NDK、SYSROOT和TOOLCHAIN路径,PREFIX是指生成的.so文件放在这里。编辑完后保存文件。
5.通过命令窗口,进入到ffmpeg文件下,通过cd 命令来进入。然后给build_android.sh文件权限,命令为:
sudo chmod +x build_android.sh
输入密码后,执行build_andorid.sh文件,命令为:
./build_android.sh
后面会等五分钟的样子,编译完后在ffmpeg同级目录下生成一个simplefflib文件,里面包括:一个include和lib。lib里面就是生成的.so文件。