在ubuntu上交叉编译helloWorld到arm64的android手机上去。

这里NDK用的是r19及以上的版本。

1. 安装NDK

这里下载了 android-ndk-r21b,解压到 /home/temp/programs/android-ndk-r21b

ad94dcdeaf41

2. 写main.cpp文件

#include

int main()

{

printf("hello world\n");

return 0;

}

3. 写交叉编译脚本 generate.sh

由于命令比较短,也可直接在命令行里写。

新建generate.sh,并给执行权限 : chmod +x generate.sh

export NDK=/home/temp/programs/android-ndk-r21b

$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android26-clang++ \

main.cpp -o hello

使用了NDK 默认安装的工具链,按照官网说明,NDK在r19之后,NDK 默认安装的工具链可供使用。

可以不需要使用 make_standalone_toolchain.py 脚本生成独立工具链来使用。

这样使用自带的工具链就比较方便,不用再配置sysroot等编译选项。

其中NDK为自己解压的目录。

编译器要选择自己手机的架构,这里用的是arm64,所以是aarch64-linux-android。

编译器要选择android的api版本,这里用的是anroid 8.0.0,对应api是26。

Android NDK从r13起,默认使用Clang进行编译。

交叉编译出可执行程序hello

./generate.sh

4. 放到手机上执行

4.1 安装adb工具

ubuntu下 :

sudo apt install android-tools-adb android-tools-fastboot

4.2 push到手机

adb push hello /data/local/tmp

4.3 给hello执行权限

adb shell

cd /data/local/tmp

chmod +x hello

4.4 执行hello

./hello

可以看到输出

hello world

5. 参考

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐