交叉编译ARM平台WebRTC库

    前两天收到一个经过处理的webRTC源码,主要包含AEC,NS,AGC,VAD四项主要功能。要将其编译成一个ARM平台下库供Android APP使用。

    怎么说呢,相当坑,源码好像是从GitHub上翻出来了,大牛精简抽离后,x86下可至今编译,但ARM下就需要下点功夫了。改起来相当累啊,耗时一个半工作日搞定,成果如下,请品鉴。

configure时为了好看,连接符可能不太标准。ANDROID_NDK的需自行设定。仅有脚本还不行,源码中还需做些微修改,这里就不再上传了,都是基本的编译问题,很简单。

#!/bin/sh

// ndk 
export ANDROID_NDK="/var/sdk/android-ndk-r14b"

export SDK_VERSION=19
export ARCH=arm

if [ "$ARCH" = "arm64" ]
then
export PLATFORM_PREFIX="aarch64-linux-android-"
export HOST="aarch64"
export PLATFORM_VERSION=4.9
else
export PLATFORM_PREFIX="arm-linux-androideabi-"
export HOST="arm"
export PLATFORM_VERSION=4.9
fi

export PREFIX=$ANDROID_NDK/platforms/android-${SDK_VERSION}/arch-${ARCH}/usr
export EPREFIX=$ANDROID_NDK/toolchains/${PLATFORM_PREFIX}${PLATFORM_VERSION}/prebuilt/linux-x86_64

export SYSROOT=$ANDROID_NDK/platforms/android-${SDK_VERSION}/arch-${ARCH}
export TOOLCHAIN=$ANDROID_NDK/toolchains/${PLATFORM_PREFIX}${PLATFORM_VERSION}/prebuilt/linux-x86_64
export PATH=$PATH:$TOOLCHAIN/bin/
#export LIBS=$ANDROID_NDK/platforms/android-${SDK_VERSION}/arch-${ARCH}/usr/lib
export STRIP=$TOOLCHAIN/bin/${PLATFORM_PREFIX}strip
export CC=$TOOLCHAIN/bin/${PLATFORM_PREFIX}gcc
export LD=$TOOLCHAIN/bin/${PLATFORM_PREFIX}ld
export AR=$TOOLCHAIN/bin/${PLATFORM_PREFIX}ar
export CXX=$TOOLCHAIN/bin/${PLATFORM_PREFIX}c++
export CROSS_PREFIX=$TOOLCHAIN/bin/${PLATFORM_PREFIX}
export NM=$TOOLCHAIN/bin/${PLATFORM_PREFIX}nm

echo "export finished, start to configure"
# below cmd should be executed manually
 ./configure --prefix=$PREFIX --enable-shared --host=arm-linux --enable-neon \
    --with-sysroot=$SYSROOT --prefix=$PREFIX --exec-prefix=$EPREFIX \
    LDFLAGS="-L$SYSROOT/usr/lib" CFLAGS="-mcpu=cortex-a8 -mfloat-abi=softfp \
    -mfpu=neon --sysroot=$SYSROOT -O3 \
    -I/var/sdk/android-ndk-r14b/sources/cxx-stl/stlport/stlport/ \
    -I/var/sdk/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/ \
    -DWEBRTC_POSIX -DWEBRTC_LINUX -DWEBRTC_THREAD_RR -DWEBRTC_CLOCK_TYPE_REALTIME \
    -DWEBRTC_ANDROID -DWEBRTC_ARCH_ARM -DNDEBUG" \
    CXXFLAGS="-mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon -std=c++11 -O3 \
    --sysroot=$SYSROOT \
    -I/var/sdk/android-ndk-r14b/sources/cxx-stl/stlport/stlport/ \
    -I/var/sdk/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/ \
    -DWEBRTC_POSIX -DWEBRTC_LINUX -DWEBRTC_THREAD_RR \
    -DWEBRTC_CLOCK_TYPE_REALTIME -DWEBRTC_ANDROID -DWEBRTC_ARCH_ARMi -DNDEBUG" \
    HAVE_ARM=1 HAVE_ARMV7=1 HAVE_NEON=1

猜你喜欢

转载自blog.csdn.net/xy_kok/article/details/81384935