我们经常需要将一些C/C++源码编译成本地二进制文件,直接在Android的Linux内核上运行,这就需要进行交叉编译。由于Android的运行环境和普通Linux有区别,所以常规针对ARM进行交叉编译得到的二进制,无法直接在Android环境运行。此时需要基于Android环境进行交叉编译,这是有两种方式:一种是编写Android.mk,在安装源码结构下依靠Android的编译系统搞定;另一种是脱离Android源码体系,利用独立的Android交叉编译工具链,并适当修改Makefile和源码完成交叉编译。第一种适用于目标源码结构比较简单的情况;而当目标源码的Makefile组织非常复杂时,第二种则是更好的选择。本文介绍第二种方式,即搭建Android独立交叉编译环境,编译出可以在Android上运行的二进制程序(ELF).
1、NDK下载
https://developer.android.google.cn/ndk/downloads/index.html
根据宿主机选择NDK版本,对于在Ubuntu下编译,选择 Linux版本的ndk包。
2、利用NDK安装Android交叉表工具链
解压NDK后,进入buildtools目录
NickPro:android-ndk-r14b nickyang$ cd build/tools/
NickPro:tools nickyang$ pwd
/Users/nickyang/android-ndk-r14b/build/tools
NDK提供二楼两个脚步用于一键化构建gcc工具链: