NDK交叉编译工具链使用教程

如果您想使用 NDK 中的交叉编译工具链,编译一个 C++ 文件,您需要以下几个步骤:

  1. 下载并安装 Android NDK,您可以从 Android 开发者网站 获取最新版本。
  2. 使用 NDK 中的 make_standalone_toolchain.py 脚本创建一个自定义的工具链,您可以指定目标 ABI、API 级别、工具链类型等参数。例如,要为 armeabi-v7a 架构创建一个基于 Clang 的工具链,您可以运行以下命令:
$ python make_standalone_toolchain.py --arch arm --api 21 --install-dir /tmp/my-android-toolchain


如果您想创建一个基于 arm64 的 Linux 的工具链,您可以使用以下命令:

$ python make_standalone_toolchain.py --arch arm64 --api 21 --install-dir /tmp/my-android-toolchain

这个命令会为 arm64 架构创建一个基于 Clang 的工具链,并将其安装在 /tmp/my-android-toolchain 目录下。您可以指定不同的 API 级别和安装目录,以满足您的需求。

username@root:~/Andriod_NDK/android-ndk-r26b-linux/android-ndk-r26b/build/tools$ python make_standalone_toolchain.py --arch arm64 --api 21 --install-dir /tmp/my-android-toolchain

WARNING:__main__:make_standalone_toolchain.py is no longer necessary.

The $NDK/toolchains/llvm/prebuilt/linux-x86_64/bin directory contains target-specific scripts that perform the same task. For example, instead of: $ python $NDK/build/tools/make_standalone_toolchain.py \ --arch arm64 --api 21 --install-dir toolchain $ toolchain/bin/clang++ src.cpp Instead use: $ $NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang++ src.cpp

这个提示的意思是,您使用的 make_standalone_toolchain.py 脚本已经不再需要了,因为 NDK 中已经提供了一些目标平台相关的脚本,可以直接使用,而不需要创建一个单独的工具链。

这些脚本位于 $NDK/toolchains/llvm/prebuilt/linux-x86_64/bin 目录中,您可以根据您的目标架构和 API 级别选择合适的脚本。例如,如果您想为 arm64 架构和 API 21 的平台编译一个 C++ 文件,您可以直接使用 aarch64-linux-android21-clang++ 脚本,而不需要先运行 make_standalone_toolchain.py 脚本。这样可以节省您的时间和空间,也可以避免一些潜在的问题。 

  1. 设置环境变量,使您的终端能够找到工具链中的编译器和链接器。例如,要将工具链添加到 PATH 中,您可以运行以下命令:
$ export PATH=/tmp/my-android-toolchain/bin:$PATH
  1. 使用工具链中的编译器和链接器编译您的 C++ 文件。例如,要编译一个名为 hello.cpp 的文件,您可以运行以下命令:
$ arm-linux-androideabi-clang++ hello.cpp -o hello

 如果没有设置环境变量,可以补全工具链前面的路径,然后编译:

iigh@GH-323:~/Andriod_NDK/android-ndk-r26b-linux/test$ /home/iiu4sgh/Andriod_NDK/android-ndk-r26b-linux/android-ndk-r26b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang++ hello.cpp  -o hello

上图使用了aarch64-linux-android21-clang++这个交叉编译工具链,编译了一个c++文件。


 

  1. 将编译后的可执行文件复制到您的 Android 设备或模拟器中,并在终端中运行它。例如,要使用 adb 工具将文件复制到 /data/local/tmp 目录中,并赋予可执行权限,您可以运行以下命令:
$ adb push hello /data/local/tmp
$ adb shell chmod 755 /data/local/tmp/hello
$ adb shell /data/local/tmp/hello

以上就是使用 NDK 中的交叉编译工具链,编译一个 C++ 文件的基本步骤。

如果您想了解更多细节和选项,请参考:

NDK 交叉编译工具链使用 - 掘金 (juejin.cn)

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aFakeProgramer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值