NDK编译ffmpeg基于使用Ubuntu15.10

网上有很多博客介绍ubuntu编译ffmpeg,但我还是决定按照自己亲身实践来讲述一篇,第一、便于自己下回有章可循;第二、把遇到的问题与解决的方式总结成套路。Let‘s go!

(1)、准备工具:ffmpeg-2.2.16.tar.gz,http://ffmpeg.org/,点击打开链接

android-ndk-r13b-linux-x86_64.zip,https://developer.android.com/ndk/downloads/index.html点击打开链接

(2)、好吧,谷歌链接如果打开不了,我们需要穿墙或者配置hosts,大家可以百度下具体方法

我这里将ffmpeg与ndk解压到ubuntu的Downloas目录下,在终端命令里cd到Downloads下,使用:tar -zxvf xxxxxxx.zip xxxxxxxxx.tar.gz执行,见下图:

(3)、现在,我们操作终端命令,cd~/Downloads/ffmpeg-2.2.16

然后:vi ./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)'
这里,当使用vi打开configure 文件后,在命令模式下使用/xxx命令进行查找,查找到的语句依次向下三行(包括本行共四行)就分别对应了目标,我们在插入模式进行修改或者删除粘贴均可,这里不做累赘讲述;

(4)、下来要进行的才是重中之重,先vi一个android_arm.sh :vi ./android_arm.sh,然后在里面键入:

#!/bin/bash
export TMPDIR=/home/su/Downloads/android_ffmpeg
export NDK=/home/su/Downloads/android-ndk-r13b
export SYSROOT=$NDK/platforms/android-16/arch-arm/
export TOOLCHAIN=/home/su/Downloads/android-ndk-r13b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export cpu=arm
export PREFIX=/home/su/Downloads/arm
export ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--extra-libs=-lgcc \
--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

为了防止后面出现不能编译成可执行文件错误,切记三点:

1、使用路径与名称要与自己电脑设置完全匹配,是正确的;

2、使用export 万一要被外面引用:

export TMPDIR=/home/su/Downloads/android_ffmpeg
export NDK=/home/su/Downloads/android-ndk-r13b
export SYSROOT=$NDK/platforms/android-16/arch-arm/
export TOOLCHAIN=/home/su/Downloads/android-ndk-r13b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export cpu=arm
export PREFIX=/home/su/Downloads/arm
export ADDI_CFLAGS="-marm"
3、预先在Downloas文件夹下建立android_ffmpeg目录与arm目录;

(5)好了,我们来给两个文本加权限吧:

chmod +x configure

chmod +xandroid_arm.sh

(6)再执行:./configure waiting....(这个很快)

这里如果出现yasm之类过旧的提示,你使用:sudo apt-get install yasm安装即可

(7)然后:sudo ./android_arm.sh(sudo在这里是为了进入系统usr这种目录可以读写)

如果不出现问题,那么等待10分钟吧!编译好后,你进入arm目录(在Downloads下)里面有include与lib目录,这就是想要的动态库,里面的链接可以删除,你使用ls -l可以明显查看。

that's all!就记录到这吧!

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...