Created: September 2, 2021
作者: 秋水君
前言
怎么编写能在Android系统中运行的C/C++可执行程序,一般有一下两种方法:
1. 通过谷歌提供的JNI机制
2. 交叉编译(本文选用方式)
安卓一般搭载在ARM架构下,其文件格式与常规X86架构的电脑端有所不同,电脑端可运行的可执行文件无法在安卓端直接运行,这就需要进行交叉编译,将代码编译为ARM环境下能够运行的程序。交叉编译有更大的自由度,可以使用NDK里提供的交叉编译工具,例如 android-ndk-r13b中就有交叉编译器 arm-linux-androideabi-gcc。
注:作者编程环境为 X86-64架构下的Ubuntu系统
xml库
可选的库有libxml2等,我这里选用 mxml 。原因在于1.纯C语言开发,更小巧便捷 2. 其依赖的库更少,之后交叉编译更容易。具体过程如下:
1. 从[GitHub](https://github.com/michaelrsweet/mxml/releases)获取压缩包 mxml-3.2.tar.gz
注意mxml也要经过交叉编译,正常gcc编译的mxml库在主程序交叉编译时无法直接链接到主程序。
1. 下载后解压,运行 /.configure ,设定编译器选项 CC=arm-linux-androideabi-gcc 及 编译输出路径 —–prefix=XXX
2. 运行命令 ./configure 得到Makefile。修改Makefile将 LIBS = -lpthre