美文网首页
ubantu上编译ffmpeg2

ubantu上编译ffmpeg2

作者: 九流程序员_風 | 来源:发表于2018-06-15 16:50 被阅读0次

    接着上一篇:在ubantu上编译ffmepg

    把各个so文件编译成一个so文件:

    主要修改:开启静态文件(.a)编译,关闭动态文件(.so)的编译,最后合成一个so文件

    --enable-static \

     --disable-shared \

    $TOOLCHAIN/bin/arm-linux-androideabi-ld \

    -rpath-link=$SYSROOT/usr/lib \

    -L$SYSROOT/usr/lib \

    -L$PREFIX/lib \

    -soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \

    $PREFIX/libffmpeg.so \

        libavcodec/libavcodec.a \

        libavfilter/libavfilter.a \

        libswresample/libswresample.a \

        libavformat/libavformat.a \

        libavutil/libavutil.a \

        libswscale/libswscale.a \

        -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \

        $TOOLCHAIN/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a \

    整个sh脚步文件如下,xxx表示路径:

    export TMPDIR=/home/xxx/e/ffmpeg-3.2.10/ffmpegtemp

    NDK=/home/xxx/e/android-ndk-r15c

    SYSROOT=$NDK/platforms/android-14/arch-arm

    TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

    function build_one(){

    ./configure \

        --prefix=$PREFIX \

        --enable-static \

        --disable-shared \

        --disable-doc \

        --disable-ffmpeg \

        --disable-ffplay \

        --disable-ffprobe \

        --disable-ffserver \

        --disable-avdevice \

        --disable-doc \

        --disable-symver \

        --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \

        --target-os=linux \

        --arch=arm \

        --enable-cross-compile \

        --sysroot=$SYSROOT \

        --extra-cflags="-Os -fpic $ADDI_CFLAGS" \

    $ADDITIONAL_CONFIGURE_FLAG

    }

    CPU=arm

    PREFIX=$(pwd)/android/single/$CPU

    ADDI_CFLAGS="-marm"

    make clean

    make -j8

    sudo make install

    build_one

    $TOOLCHAIN/bin/arm-linux-androideabi-ld \

    -rpath-link=$SYSROOT/usr/lib \

    -L$SYSROOT/usr/lib \

    -L$PREFIX/lib \

    -soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \

    $PREFIX/libffmpeg.so \

        libavcodec/libavcodec.a \

        libavfilter/libavfilter.a \

        libswresample/libswresample.a \

        libavformat/libavformat.a \

        libavutil/libavutil.a \

        libswscale/libswscale.a \

        -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \

        $TOOLCHAIN/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a \

    注意,这其中可能因为创建/android/single/路径,而使得在路径没有权限把编译好的.a文件放入路径,使得出现文件找不到或在没有文件路径的错误,解决,把最后合成的那段代码去掉,先编译出.a文件,在文件已经路径出现之后,再给文件路径修改权限,再把合成的代码添加上去,重新编译

    相关文章

      网友评论

          本文标题:ubantu上编译ffmpeg2

          本文链接:https://www.haomeiwen.com/subject/zsumeftx.html