由于
Android NDK
从r18开始就已经抛弃GCC,转而将Clang当作默认编译器,因此我们直接使用NDK工具包进行编译
实验环境
- 安卓模拟器
android-ndk-r19c
实验步骤
第一步 源码编写
新建test.c
文件
#include <stdio.h>
int main()
{
printf("Hello world!n");
return 0;
}
第二步 源码编译
在android-ndk-r19c
目录下toolchains
文件夹中的llvm
文件夹即为clang
编译工具包
在llvm
的子目录bin
下存放这针对各个架构的clang编译器,由于模拟器是ARM架构,这里我们使用armv7a-linux-androideabi23-clang
在命令窗口执行如下指令:
代码语言:javascript复制armv7a-linux-androideabi23-clang test.c -o test
由于clang已经指定了Android23版本的SDK,这里无需要像GCC那样指定-static
编译
第三步 将编译后的可执行文件传至安卓设备
代码语言:javascript复制adb push test /data/
第四步 执行文件
直接在控制台输入文件名即可执行
代码语言:javascript复制./test
如果提示权限拒绝,那么
代码语言:javascript复制chmod 777 test
附加
如果C语言和汇编语言混合开发,同样也可使用clang编译:
代码语言:javascript复制armv7a-linux-androideabi23-clang aaa.s test.c -o test