交叉编译ARM平台WebRTC库

2019-07-13 02:09发布

    前两天收到一个经过处理的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