关闭

使用CMake进行android native开发

6023人阅读 评论(0) 收藏 举报
分类:


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


1、下载android-cmake

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


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

    export NDK=~/android/android-ndk-r6 #填android ndk的路径

    $NDK/build/tools/make-standalone-toolchain.sh –platform=android-12 –install-dir=/opt/android-toolchain-12

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

  export ANDTOOLCHAIN=$ANDROID_CMAKE/toolchain/android.toolchain.cmake    #$ANDROID_CMAKE是第一步下载的android-cmake的路径
  alias android-cmake='cmake -DCMAKE_TOOLCHAIN_FILE=$ANDTOOLCHAIN '
  source /etc/profile


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

  cd $MY_CMAKE_PROJECT
  mkdir build
  cd build
  android-cmake ..


位于libs/armeabi-v7.

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

objdump -a libxxx.a

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

file libxxx.so



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

#!/bin/sh

export PATH="/media/f12/opt/ndklocal/bin:${PATH}" 
PREF="arm-linux-androideabi-"

export CC="${PREF}gcc"
export CXX="${PREF}g++"
export LD="${PREF}ld "
export CPP="${PREF}cpp"
export AS="${PREF}as"
export OBJCOPY="${PREF}objcopy"
export OBJDUMP="${PREF}objdump"
export STRIP="${PREF}strip"
export RANLIB="${PREF}ranlib"
export CCLD="${PREF}gcc"
export AR="${PREF}ar"

OUT_DIR="`pwd`/android-build"

cmake	\
		-DCMAKE_SYSTEM_NAME="Generic" \
		-DCMAKE_CXX_FLAGS="${C_FLAGS}" \
		-DJTHREAD_INCLUDE_DIRS="../jthread/android-build/include/jthread" \  
		-DJTHREAD_LIBRARIES="../jthread/android-build/lib" \  
		-DCMAKE_PREFIX_PATH="../jthread/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




0
2

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:60552次
    • 积分:1123
    • 等级:
    • 排名:千里之外
    • 原创:46篇
    • 转载:52篇
    • 译文:0篇
    • 评论:8条
    文章分类
    最新评论