美文网首页
Linux下编译Android 64位WebRtc的总结-编译6

Linux下编译Android 64位WebRtc的总结-编译6

作者: 划落永恒 | 来源:发表于2019-06-11 15:22 被阅读0次

    Google 8.1号开始强制必须支持64位。之前的版本源码是不支持的。
    WebRtc最重要的支持库之一就是ffmpeg了,我这边祖传代码是2.8.4的版本。后面的版本编译脚本基本上通用的。

    这里附上我可以运行的脚本:

    #!/bin/bash
    NDK=../Android/android-ndk-r10e
    ADDI_CFLAGS="-fPIE -pie"
    ADDI_LDFLAGS="-fPIE -pie"
    
    configure()
    {
        CPU=$1
        PREFIX=$(pwd)/android/$CPU
        x264=$(pwd)/x264/android/$CPU
        HOST=""
        CROSS_PREFIX=""
        SYSROOT=""
        ARCH=""
        ANDROID=""
        if [ "$CPU" == "armv7-a" ]
        then
            ANDROID="androideabi"
            ARCH="arm"
            HOST=arm-linux
            SYSROOT=$NDK/platforms/android-21/arch-arm/
            CROSS_PREFIX=$NDK/toolchains/arm-linux-$ANDROID-4.9/prebuilt/linux-x86_64/bin/arm-linux-$ANDROID-
        else
            ARCH="aarch64"
        ANDROID="android"
            HOST=aarch64-linux
            SYSROOT=$NDK/platforms/android-21/arch-arm64/
            CROSS_PREFIX=$NDK/toolchains/aarch64-linux-$ANDROID-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-$ANDROID-
        fi
    echo "CROSS_PREFIX = $CROSS_PREFIX"
        ./configure \
        --target-os=android \
        --prefix=$PREFIX \
        --enable-cross-compile \
        --extra-libs="-lgcc" \
        --cc=$NDK/toolchains/$ARCH-linux-android-4.9/prebuilt/linux-x86_64/bin/$ARCH-linux-$ANDROID-gcc \
        --cross-prefix=$CROSS_PREFIX \
        --nm=$NDK/toolchains/$ARCH-linux-android-4.9/prebuilt/linux-x86_64/bin/$ARCH-linux-$ANDROID-nm \
        --extra-cflags=" -O3 " \
        --enable-shared \
        --enable-static \
        --extra-ldflags="-Wl,-rpath-link=$SYSROOT/usr/lib -L$SYSROOT/usr/lib -nostdlib -lc -lm -ldl -llog" \
        --disable-everything \
        --disable-ffplay \
        --enable-demuxer=mov \
        --enable-demuxer=h264 \
        --enable-protocol=file \
        --enable-avformat \
        --enable-avcodec \
        --enable-decoder=rawvideo \
        --enable-decoder=mjpeg \
        --enable-decoder=h263 \
        --enable-decoder=mpeg4 \
        --enable-decoder=h264 \
        --enable-parser=h264 \
        --disable-network \
        --enable-zlib \
        --enable-avfilter \
        --disable-avdevice \
        --enable-ffmpeg \
        --arch=$ARCH \
        --sysroot=$SYSROOT \
        --extra-ldflags="-L$x264/lib"
    }
    
    build()
    {
        make clean
        cpu=$1
        echo "build $cpu"
        
        configure $cpu
        make -j4
        make install
    }
    //这里是选择编译版本64位或者32位
    build arm64
    #build armv7-a
    

    注释:第二行是NDK路径,比较重要的参数是target-os,指定的是编译的平台,只有linux和android;decoder是编码格式,选择自己需要的就可以了,prefix是编译库的路径,extra-cflags是声明一些参数,O3是报错等级(其他的是我这边其它的要求不做解释)。

    直接复制到根目录下,运行脚本就可以了,最后的编译完成会在目录 Android下生成arm64或者armv7-a的文件夹,在文件夹中的lib中会有对应的动态库。

    image.png

    附:linux查看动态库是不是64位可以执行

    objdump -a 文件.a/.so

    出现下面的elf64就是64位的库

    image.png

    相关文章

      网友评论

          本文标题:Linux下编译Android 64位WebRtc的总结-编译6

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