15.Linux shell编程(编译ffmpeg)

(创建于2018/2/5)

这个脚本是可以正常编译的,但是不排除,复制到Linux上后出现问题的情况,注意Linux编程的严谨性,多余的空格会导致问题的出现

执行脚本开始编译之前,需要在ffmpeg目录下执行命令,目的是进行一系列的准备工作,例如检查gcc的版本,
生成config.mak等文件,注意,生成一次之后不会再次重新生成,所以存在一个问题,如果你在一台Linux计算机
或者别的计算机上执行之后生成了config等,然后你传输到Windows系统上,再次执行,不会重新生成文件覆盖
导致生成的文件环境还是之前的系统,所以导致出现问题

./configure --disable-yasm      //--disable-yasm是为了禁用yasm,如果你直接执行./configure 会有提示

tip:执行如下命令可以查看帮助

./configure --help
#!/bin/bash

#全局变量,多个shell脚本都可以使用
export ANDROID_NDK_HOME=/usr/ndk/android-ndk-r10e
export PLATFORM_VERSION=android-9

function build_ffmpeg
{
    echo "start build ffmpeg $ARCH"
    ./configure --target-os=linux \     //注意这里是linux后边一个空格,然后\,再回车换行,最后按tab键,不要按空格键,否则出错
    --prefix=$PREFIX \                  //编译完成后动态库放置的文件目录
    --arch=$ARCH \
    --enable-shared \
    --disable-static \
    --disable-yasm \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --disable-doc \
    --enable-cross-compile \
    --cross-prefix=$CROSS_COMPILE \
    --sysroot=$PLATFORM \
    --extra-cflags="-fpic"                //最后一个命令不加 \
    make clean                            //删除.o临时文件
    make
    make install

    echo "build finished $ARCH"
}

#exec 1>jason_build_stdout.txt
#exec 2>jason_build_stdout.txt
#arm
ARCH=arm                                  //CPU架构
CPU=arm                                   //CPU
PREFIX=$(pwd)/android/$CPU                //动态库放置的位置,pwd 当前目录
TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-
PLATFORM=$ANDROID_NKD_HOME/platforms/$PLATFORM_VERSION/arch-$ARCH
build_ffmpeg

#x86
ARCH=x86
CPU=x86
PREFIX=$(pwd)/android/$CPU
TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/x86-4.9/prebuilt/linux-x86_64
CROSS_COMPILE=$TOOLCHAIN/bin/i686-linux-android-
PLATFORM=$ANDROID_NKD_HOME/platforms/$PLATFORM_VERSION/arch-$ARCH
build_ffmpeg

你可能感兴趣的:(15.Linux shell编程(编译ffmpeg))