Ubuntu系统下实现Android工程调用独立编译的C++程序和GMP、PBC库

目的:

  实现使用C++编写代码供Android工程调用。C++代码中可以使用STL库,也可以使用常用的由源码编译生成的库,如PBC。因为PBC是基于GMP库的,所以这里只记录了GMP和PBC库的编译安装方法,其它库的方法类似。

特点:

  不使用集成的ndk-build功能,不需要在jni目录下写c文件和mk文件,而是从NDK中提取出交叉编译toolchain,这样可以在CodeBlocks等环境中建立独立工程进行C++代码的开发,然后编译生成动态库交给Android工程来加载。

准备工作:
  一个搭建好的Android开发环境(SDK),以及:
  android-ndk-r9d-linux-x86_64.tar.bz2
  gmp-6.0.0a.tar.bz2
  pbc-0.5.14.tar.gz
  这些都可以去各自的官网下载到。

一、搭建Android交叉编译环境

  解压ndk开发包,并提取其中的toolchain到指定目录:

$ cd android-ndk-r9d/
$ build/tools/make-standalone-toolchain.sh --toolchain=arm-linux-androideabi-4.8 --platform=android-19 --system=linux-x86_64 --install-dir=$HOME/android-19-arm
  参数说明:这里的toolchain参数指定的目标是基于ARM的Android设备,也可以根据需要改成基于x86或MIPS的Android设备,具体的参数名可以参见android-ndk-r9d/toolchains目录。参数platform设置为android-19,指生成的工具链是针对Android 4.4版本的,具体对应关系可以查看android-ndk-r9d/docs/STABLE-APIS.html文件。参数system指的是本机系统,即运行toolchain的环境。这里将提取出来的toolchain安装到了用户主目录下的android-19-arm文件夹,以后的工作都是在这个文件夹下进行,不再需要android-ndk-r9d目录了。

  为toolchain添加环境变量,在文件/etc/profile的最后加上:

# android toolchain
export TOOLCHAIN_HOME=$HOME/android-19-arm
export PATH=$TOOLCHAIN_HOME/bin:$PATH
  然后最好注销一次,使环境变量生效(也可以用source /etc/profile,但好像只对本终端有效「注:elementary OS Luna」)

你可能感兴趣的:(交叉编译,ubuntu,android,c++,PBC,Library)