linux下jrtplib库移植到android上

前提linux下安装cmake,可执行sudo apt-get install cmake安装。(本文参照https://github.com/jimjh/JRTPLib-for-Android,作者在mac系统编译通过)


1,下载相关lib库,本列使用jrtplib-1.9.0和jthread-1.3.0(注:jrtplib引用了jthread的线程,所以要使用jthread库)


2,解压后得到文件夹jrtplib-1.9.0和jthread-1.3.0。


3,在jthread-1.3.0文件夹下建立android.sh构建脚本.内容如下(备注:ndk路径和C_FLAGS请改为自己系统的正确路径)



#!/bin/sh
# 
# 
# Builds the JThread library for Android
export NDK_ROOT="/home/lch/Desktop/android-ndk-r9d"
export PATH="${NDK_ROOT}/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/:${PATH}"
SYS_ROOT="${NDK_ROOT}/platforms/android-8/arch-arm"
PREF="arm-linux-androideabi-"

OUT_DIR="`pwd`/android-build"
C_FLAGS="-lstdc++ -lsupc++ \
        -I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include \
        -I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include \
        -L${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi"

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

4,命令行执行android.sh脚本即可在当前目录的android-build目录下得到相关头文件和库。


5,编译jrtplib库,在jrtplib-1.9.0文件夹下建立android.sh构建脚本.内容如下(备注:ndk路径和C_FLAGS请改为自己系统的正确路径,打开CMakeLists.txt,找到并注释掉: add_subdirectory(examples),因为在编译例子的时候会有错误 ,我们只需要这个库)



#!/bin/sh
# 
# 
# Builds the JRTPLib library for Android

export NDK_ROOT="/home/lch/Desktop/android-ndk-r9d"
export PATH="${NDK_ROOT}/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/:${PATH}"
SYS_ROOT="${NDK_ROOT}/platforms/android-8/arch-arm"
PREF="arm-linux-androideabi-"

C_FLAGS="	-lc \
			-lgcc \
			-lstdc++ -lsupc++ \
			-I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include \
			-I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include \
			-L../jthread-1.3.0/android-build/lib \
			-L${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi"
OUT_DIR="`pwd`/android-build"

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.0/android-build/include" \
		-DJTHREAD_LIBRARIES="../jthread-1.3.0/android-build/lib" \
		-DCMAKE_PREFIX_PATH="../jthread-1.3.0/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

6,命令行执行android.sh脚本即可在当前目录的 android-build目录下得到相关头文件和库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值