安卓下不使用ndk运行原生C++
因为有不使用ndk和JNI来在安卓上运行C++程序的需求,因此在查阅了一些文章之后写下本文。
环境
- 编译环境为Windows下的Ubuntu WSL子系统;
- 运行环境为android 11;
- 交叉编译器为arm-linux-gnueabihf-gcc;
安装交叉编译环境
- 下载并安装gcc环境
sudo apt-get install gcc-arm-linux-gnueabihf
- 下载并安装g++环境
sudo apt-get install g++-arm-linux-gnueabihf
交叉编译器安装完成。
示例程序hello world
main.c
#include<stdio.h>
int main(){
printf("Hello world.\n");
return 0;
}
使用交叉编译工具编译该文件:
arm-linux-gnueabihf-gcc -static main.c -o main
注意:这人使用-static选项的目的,是因为安卓并不提供标准输出的动态链接库,因此我们要使用静态链接的办法将标准输出的链接库链接到main文件中
运行程序
- 使用adb命令将可执行文件main push至/data/local/tmp目录下
adb push main /data/local/tmp
- 运行hello文件
cd /data/local/tmp
chmod 777 maim
./main
- 输出结果
|