当前位置: 首页 > ds >正文

android-ndk开发(8): ndk 和 clang 版本对照表

android-ndk开发(8): ndk 和 clang 版本对照表

2025/05/06

1. 概要

android-ndk 是基于 clang 的编译工具链。 当 clang 自身的版本变更导致了普通用户的编译、链接报错时, 用户可能只关注到了 ndk 版本, 导致问题的分析浮于表面。

android-ndk 官方 changelog 中也提及了 clang 相关的变更, 但, 细节太多。

本文整理一个表格, 并给出确定表格的方法。

2. android-ndk changelog

android-ndk 的 wiki 上存放了各个版本的 changelog, 比如:

https://github.com/android/ndk/wiki/Changelog-r19

https://github.com/android/ndk/wiki/Changelog-r21

https://github.com/android/ndk/wiki/Changelog-r26

这些 changelog 分散在不同的网页中, 每次查看有点麻烦。 可以克隆 ndk 源码仓库来统一查看:

git clone https://android.googlesource.com/platform/ndk.git

在 ndk/docs/changelogs 目录存放了最近11个版本的changelog:

PS D:\github\ndk> dir docs/changelogs目录: D:\github\ndk\docs\changelogsMode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          2025/5/6     15:31           9844 Changelog-r19.md
-a----          2025/5/6     15:31           5308 Changelog-r20.md
-a----          2025/5/6     15:31          14294 Changelog-r21.md
-a----          2025/5/6     15:31           8834 Changelog-r22.md
-a----          2025/5/6     15:31          11925 Changelog-r23.md
-a----          2025/5/6     15:31           7834 Changelog-r24.md
-a----          2025/5/6     15:31           6603 Changelog-r25.md
-a----          2025/5/6     15:31           9159 Changelog-r26.md
-a----          2025/5/6     15:31           7758 Changelog-r27.md
-a----          2025/5/6     15:31           4124 Changelog-r28.md
-a----          2025/5/6     15:31           1387 Changelog-r29.md
-a----          2025/5/6     15:31            532 Changelog-r30.md

例如 ndk-r26 的 changelog 提到, 后续会直接使用上游的 libc++ 更新, 不会再显式提及 libc++ 更新。

The NDK’s libc++ now comes directly from our LLVM
toolchain, so every future LLVM update is also a libc++ update. Future
changelogs will not explicitly mention libc++ updates.

3. ndk 和 clang 版本对照表

<ndk-目录>/source.properties, 如 ndk-r21e:

Pkg.Desc = Android NDK
Pkg.Revision = 21.4.7075529

查看 NDK 对应的 clang 版本:
win: D:/soft/android-ndk/r21e/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ --version
linux: ~/soft/android-ndk/r23c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --version

ndkndkClang
r28b28.1.1335670919.0.0
r27c27.2.1247901818.0.3
r26d26.3.1157926417.0.2
r25c25.2.951965314.0.7
r25b25.1.893739314.0.6
r2424.0.821588814.0.1
r23c23.2.856831312.0.9
r22b22.1.717167011.0.5
r21e21.4.70755299.0.9
r21b21.1.63524629.0.8
r20b20.1.59489448.0.7
r19c19.2.53456008.0.2
r18b18.1.50630457.0.2

这个表格, 在后续分析 __aarch64_swp4_acq_rel 符号找不到问题时起到作用。

4. 总结

本文给出了查阅 ndk 各个版本 changelog 的方法, 包括 wiki 网站, 和 ndk 源码仓库, 这些 changelog 提供了比较详细的信息。 本文还给出了 ndk 和 clang 版本的对照表, 包括 ndk 字母形式的短版本、 纯数字的版本, 而对应的 clang 版本,则能用于和上游 LLVM 的版本变更做联动的分析。

http://www.xdnf.cn/news/4470.html

相关文章:

  • 北京华锐视点邀您参与2025数字显示与元宇宙博览会【5月10-12日】
  • 浅谈Vue2 与 Vue3 的区别
  • 前端流行框架Vue3教程:13. 组件传递数据_Props
  • 学习Linux的第三天
  • 某振动分析系统的参数交叉核算
  • 解决 pnpm dev 运行报错的坎坷历程
  • 【第25节 性能指标计算】
  • 4.1框架应用
  • 系统架构师2025年论文《信息系统安全体系设计》
  • Xilinx DSP48E2 slice 一个周期能做几次float32浮点数乘法或者加法?如果是fix 32定点数呢?
  • “wsl --install -d Ubuntu-22.04”下载慢,中国地区离线安装 Ubuntu 22.04 WSL方法(亲测2025年5月6日)
  • python + whisper 读取蓝牙耳机, 转为文字
  • JavaScript 到命令和控制 (C2) 服务器恶意软件分析及防御
  • 三生原理是如何与狄利克雷定理兼容的?
  • 使用docker配置Mysql
  • 2021-10-29 C++被17或13整除最大10个数的和
  • 六六大顺--高精度+数学
  • 【QT】QT软件编译生成exe后,需要拷贝依赖库使用方法
  • 使用Windows+Linux实现mysql的主从复制
  • 【容器化】Docker容器技术入门基础教程
  • 【第四章】23-常见问题的快速处理
  • UKCC(原OUCC)真题讲解(一)
  • 代码随想录算法训练营总结篇
  • C++ 的 Tag Dispatching 技术
  • 人工智能 计算智能领域中分布估计算法的核心思想
  • 深度学习模型GoogLeNet的创新
  • 深入解析代理服务器:原理、应用与实战配置指南
  • 支持 BLF 的 Kamailio 脚本
  • Baklib知识中台驱动企业智能升级
  • SpringBoot快速入门复习概览