最近想搞一下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)
执行,祝好运,就能生成,下一步再接着搞,一步步来