美文网首页
在linux上交叉编译helloWorld到android手机上

在linux上交叉编译helloWorld到android手机上

作者: book_02 | 来源:发表于2020-08-06 20:20 被阅读0次

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

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

1. 安装NDK

从下面的链接下载NDK,并解压:
https://developer.android.google.cn/ndk/downloads/

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

2. 写main.cpp文件

#include <stdio.h>

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. 参考

https://developer.android.com/ndk/guides/other_build_systems

相关文章

网友评论

      本文标题:在linux上交叉编译helloWorld到android手机上

      本文链接:https://www.haomeiwen.com/subject/taptdktx.html