使用ubuntu14和ndk 编译ffmpeg在android平台的so动态库

1 安装unbuntu14环境

2 下载LINUX环境下的ndk(http://blog.csdn.net/gyh198/article/details/75036686)

   如果下载的ndk文件时xxx.bin格式,终端直接进入该文件所在的目录

   chmod +x  ./xxx.bin    

   ./xxx.bin  

   执行完毕后就可以生成可正常使用的ndk环境

3 去ffmpeg官网下载源码,解压至ndk所在的目录

以上三步操作的结果如下图:


4 进入ffmpeg-3.0.10目录

   (1) 修改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)'


(2)创build_android.sh脚本文件

  #!/bin/bash 
     NDK=/home/wcf/Downloads/android-ndk-r10e
     SYSROOT=$NDK/platforms/android-21/arch-arm/
     TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86
     TOOLCPU=arm-linux-androideabi
     CPU=arm
     PREFIX=$(pwd)/android/$CPU 
     ADDI_CFLAGS="-marm"
     ADDI_LDFLAGS="-lm -lz -Wl,-soname=libffmpeg.so,-z,noexecstack"
     function build_one
     {
      ./configure --target-os=linux --prefix=$PREFIX\
       --enable-cross-compile\
       --enable-runtime-cpudetect\
       --disable-asm\
       --arch=$CPU\
       --cc=$TOOLCHAIN/bin/$TOOLCPU-gcc\
       --cross-prefix=$TOOLCHAIN/bin/$TOOLCPU-\
       --enable-stripping\
       --nm=$TOOLCHAIN/bin/$TOOLCPU-nm\
       --sysroot=$SYSROOT\
       --enable-gpl --enable-shared --disable-static  --enable-small\
       --enable-zlib --disable-ffprobe --disable-ffplay --disable-ffmpeg\
       --disable-ffserver\
       --extra-cflags="-I$SYSROOT/usr/include"\
       --extra-ldflags="$ADDI_LDFLAGS"\
      $ADDITIONAL_CONFIGURE_FLAG
     } 
    build_one


(3)终端执行build_android.sh文件

chmmod +x build_android.sh

make 

make install



注意:32位的linux无法编译64位的so文件,ubuntu和ndk位数必须一致

猜你喜欢

转载自blog.csdn.net/fengchengwu2012/article/details/79307715