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

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 的版本变更做联动的分析。

相关文章:

  • 遨游科普:2025年,三防平板有多智能?
  • 【coze】意图识别(售前售后问题、搜索引擎去广告)
  • DVWA靶场保姆级通关教程--03CSRF跨站请求伪造
  • 学习groovy知识点总结
  • Qt国际化实战--精通Qt Linguist工具链
  • Spring Boot Starter简介-笔记
  • Android 开发中JDK 的使用和配置详解
  • 通过 ModernBERT 实现零样本分类的性能提升
  • DeepSeek部署实战指南:从环境搭建到企业级优化
  • 【Pandas】pandas DataFrame agg
  • 《数据分析与可视化》(清华)ch-6 作业 三、绘图题
  • 前端面试每日三题 - Day 26
  • 如何用爬虫获得按关键字搜索淘宝商品
  • 【能力比对】K8S数据平台VS数据平台
  • 第2章 神经网络的数学基础
  • 【高级IO】多路转接之select
  • SQLark可以支持PostgreSQL了,有哪些新功能?
  • AI应用爆发或将进入临界点
  • 【HarmonyOS 5】鸿蒙发展历程
  • uv简单使用
  • 观察|印巴交火开始升级,是否会升级为第四次印巴战争?
  • 川大全职引进考古学家宫本一夫,他曾任日本九州大学副校长
  • 经济日报:落实落细更加积极的财政政策
  • 商务部:自5月7日起对原产于印度的进口氯氰菊酯征收反倾销税
  • 默茨在德国联邦议院第一轮投票中未能当选总理
  • 超导电路新设计有望提升量子处理器速度