我是在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文件。
