使用CMake进行android native开发

Android NDK中提供了ndk-build脚本,以及若干mk文件,以简化ndk的开发,这对于开发一些小型应用来说足够了.如果对于一些大型工程特别是开源工程,人家是要cmake来组织的该怎么编译呢,总不能自己去重新写.mk文件吧。下面介绍对于这种项目的android库编译方法。


1、下载android-cmake

     https://code.google.com/p/android-cmake/


2、使用NDK创建单独的工具链

[python]  view plain  copy
  1. export NDK=~/android/android-ndk-r6 #填android ndk的路径  
  2.   
  3. $NDK/build/tools/make-standalone-toolchain.sh –platform=android-12 –install-dir=/opt/android-toolchain-12  

3、编辑/etc/profile,在最后添加

[python]  view plain  copy
  1. export ANDTOOLCHAIN=$ANDROID_CMAKE/toolchain/android.toolchain.cmake    #$ANDROID_CMAKE是第一步下载的android-cmake的路径  
  2. alias android-cmake='cmake -DCMAKE_TOOLCHAIN_FILE=$ANDTOOLCHAIN '  
[python]  view plain  copy
  1. source /etc/profile  


这样以后,就可以通过执行android-cmake命令编译出适合Android平台的.a和.so文件了。

[python]  view plain  copy
  1. cd $MY_CMAKE_PROJECT  
  2. mkdir build  
  3. cd build  
  4. android-cmake ..  


位于libs/armeabi-v7.

静态库可通过下面指令查看文件架构

objdump -a libxxx.a

动态库通过下面指令查看。

file libxxx.so



另附一个脚本,对于不使用android-cmake也想编译的话,参考下面脚本。

[python]  view plain  copy
  1. #!/bin/sh  
  2.   
  3. export PATH="/media/f12/opt/ndklocal/bin:${PATH}"   
  4. PREF="arm-linux-androideabi-"  
  5.   
  6. export CC="${PREF}gcc"  
  7. export CXX="${PREF}g++"  
  8. export LD="${PREF}ld "  
  9. export CPP="${PREF}cpp"  
  10. export AS="${PREF}as"  
  11. export OBJCOPY="${PREF}objcopy"  
  12. export OBJDUMP="${PREF}objdump"  
  13. export STRIP="${PREF}strip"  
  14. export RANLIB="${PREF}ranlib"  
  15. export CCLD="${PREF}gcc"  
  16. export AR="${PREF}ar"  
  17.   
  18. OUT_DIR="`pwd`/android-build"  
  19.   
  20. cmake   \  
  21.         -DCMAKE_SYSTEM_NAME="Generic" \  
  22.         -DCMAKE_CXX_FLAGS="${C_FLAGS}" \  
  23.         -DJTHREAD_INCLUDE_DIRS="../jthread/android-build/include/jthread" \    
  24.         -DJTHREAD_LIBRARIES="../jthread/android-build/lib" \    
  25.         -DCMAKE_PREFIX_PATH="../jthread/android-build" \     
  26.         -DCMAKE_INSTALL_PREFIX="${OUT_DIR}" .  
  27.           
  28. make && \  
  29. make install  
  30.   
  31. cd ${OUT_DIR}/lib && \  
  32. ${AR} -x libjrtplib.a && \  
  33. ${CXX} ${C_FLAGS} -shared -Wl,-soname,libjrtplib.so -o libjrtplib.so  *.obj && \  
  34. rm *.obj  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值