天天看点

ubuntu14下编译android jrtplib

最近想搞一下rtp做个系统玩玩,上网查了N多资料,但是各种资料都是c2c,反正没搞定,

只好自己摸索,现在把编译及配置文件贴上做个记录

参考资料:

https://github.com/jimjh/JRTPLib-for-Android

先下载 jthread1.3.1和jrtplib-3.9.1 解压后放在同一目录

1 进入jthread1.3.1,创建目录android-build

2,修改src/pthread/jthread.cpp的125行,找到pthread_cancel(threadid);并注释之,替换成 pthread_kill(threadid, SIGUSR1);

3 创建文件 android.sh,内容如下

#!/bin/sh  

export NDK_ROOT=/Users/feng/Documents/workspace/android-ndk/android-ndk-r10e/

export PATH="${NDK_ROOT}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/:${PATH}"

SYS_ROOT="${NDK_ROOT}/platforms/android-17/arch-arm"

PREF="arm-linux-androideabi-"

C_FLAGS="   -lc \

            -lgcc \

            -lstdc++ \

            -I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.9/include \

            -I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include \

            -L../jthread-1.3.1/android-build/lib \

            -L${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/libs/armeabi"

OUT_DIR="`pwd`/android-build"

#           -lsupc++ \不知是个啥,加上不能过

set -e

export CC="${PREF}gcc  --sysroot=${SYS_ROOT}"

export CXX="${PREF}g++  --sysroot=${SYS_ROOT}"

export LD="${PREF}ld  --sysroot=${SYS_ROOT}"

export CPP="${PREF}cpp  --sysroot=${SYS_ROOT}"

export AS="${PREF}as"

export OBJCOPY="${PREF}objcopy"

export OBJDUMP="${PREF}objdump"

export STRIP="${PREF}strip"

export RANLIB="${PREF}ranlib"

export CCLD="${PREF}gcc  --sysroot=${SYS_ROOT}"

export AR="${PREF}ar"

cmake   \

        -DCMAKE_SYSTEM_NAME="Generic" \

        -DCMAKE_CXX_FLAGS="${C_FLAGS}" \

        -DCMAKE_FIND_ROOT_PATH="${SYS_ROOT}" \

        -DCMAKE_INSTALL_PREFIX="${OUT_DIR}"

make && \

make install

cd ${OUT_DIR}/lib && \

${AR} -x libjthread.a && \

${CXX} ${C_FLAGS} -shared -Wl,-soname,libjthread.so -o libjthread.so  *.obj && \

rm *.obj

exit 0

执行android.sh

编译jrtplib

1,返回上一步目录,进入jrtplib-3.9.1

创建目录android-build

2.创建android.sh,内容如下

#!/bin/sh  

export NDK_ROOT=/Users/feng/Documents/workspace/android-ndk/android-ndk-r10e/

export PATH="${NDK_ROOT}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/:${PATH}"

SYS_ROOT="${NDK_ROOT}/platforms/android-17/arch-arm"

PREF="arm-linux-androideabi-"

C_FLAGS="    -lc \

            -lgcc \

            -lstdc++ \

            -I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.9/include \

            -I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include \

            -L../jthread-1.3.1/android-build/lib \

            -L${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/libs/armeabi"

OUT_DIR="`pwd`/android-build"

#            -lsupc++ \不知是个啥,加上不能过

#-lstdc++ \

#            -I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.9/include \

#            -I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include \

#  include<new>,如果没有上面就会报这个头找不到

#

set -e

export CC="${PREF}gcc  --sysroot=${SYS_ROOT}"

export CXX="${PREF}g++  --sysroot=${SYS_ROOT}"

export LD="${PREF}ld  --sysroot=${SYS_ROOT}"

export CPP="${PREF}cpp  --sysroot=${SYS_ROOT}"

export AS="${PREF}as"

export OBJCOPY="${PREF}objcopy"

export OBJDUMP="${PREF}objdump"

export STRIP="${PREF}strip"

export RANLIB="${PREF}ranlib"

export CCLD="${PREF}gcc  --sysroot=${SYS_ROOT}"

export AR="${PREF}ar"

cmake    \

        -DCMAKE_SYSTEM_NAME="Generic" \

        -DCMAKE_CXX_FLAGS="${C_FLAGS}" \

        -DCMAKE_FIND_ROOT_PATH="${SYS_ROOT}" \

        -DJTHREAD_INCLUDE_DIRS="../jthread-1.3.1/android-build/include" \

        -DJTHREAD_LIBRARIES="../jthread-1.3.1/android-build/lib" \

        -DCMAKE_PREFIX_PATH="../jthread-1.3.1/android-build" \

        -DCMAKE_INSTALL_PREFIX="${OUT_DIR}" .

make && \

make install

cd ${OUT_DIR}/lib && \

${AR} -x libjrtplib.a && \

${CXX} ${C_FLAGS} -shared -Wl,-soname,libjrtplib.so -o libjrtplib.so  *.obj && \

rm *.obj

exit 0

需要注释  add_subdirectory(examples)

执行,祝好运,就能生成,下一步再接着搞,一步步来