【RK3576】【Android14】如何在Android14下单独编译kernel-6.1?

单独编译kernel依赖如下几个源码:

【交叉编译工具链】

prebuilts/clang/host/linux-x86/clang-r487747c

【内核源码】

kernel-6.1

为什么Android下编译内核使用clang作为交叉编译工具链而不是GCC?

Android 14 选择使用预置的 Clang 工具链(如 clang-r487747c)而非 GCC 来编译内核,主要是因为 Google 为统一和掌控整个 Android 生态的构建环境。Clang 作为 LLVM 项目的一部分,相比 GCC 具有编译速度更快、内存占用更低、错误提示更清晰易懂等优势,并且其模块化设计更易于集成到 Android 的现代构建系统(如 Soong/Bazel)中。更重要的是,Google 能主动为 Clang 开发和集成针对 Android 平台的特定优化、安全强化特性(如更严格的未定义行为检查、内核控制流完整性保护 CFI)以及对现代 C/C++ 标准的支持,从而确保跨不同设备和内核版本构建的一致性、安全性和性能。

编译kernel-6.1内核,配置如下:

复制代码
# 配置交叉编译工具链路径
export PATH=【绝对路径】/prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH

# 配置menuconfig
make LLVM=1 LLVM_IAS=1 ARCH=arm64 rockchip_defconfig

# 编译内核源码
make LLVM=1 LLVM_IAS=1 ARCH=arm64 -j16 Image.gz dtbs

参数解析如下:

【LLVM=1】:

核心参数。告知内核构建系统使用 clang 作为编译器,而不是默认的 gcc。

【LLVM_IAS=1】:

告知内核构建系统使用 Clang 的集成汇编器来编译汇编代码(.S 文件),而不是使用 GNU 的 as 汇编器。这避免了潜在的不兼容问题。

【ARCH=arm64】:

指定目标 CPU 架构为 ARM64(AArch64)

相关推荐
DFT计算杂谈7 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
Zhang~Ling8 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
DeeplyMind8 小时前
Linux 深入 per-VMA lock:Linux 缺页路径如何摆脱 mmap_lock
linux·per-vma lock
爱写代码的森8 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
XMAIPC_Robot9 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
重生的黑客10 小时前
Linux 进程优先级、切换与调度:从孤儿进程到 O(1) 调度模型
linux·运维·服务器·进程优先级·nice
骑上单车去旅行11 小时前
MD5校验对比脚本
linux·服务器·windows
平生幻11 小时前
Linux 常用命令
linux
ShirleyWang01212 小时前
让headlamp控制台能访问
linux·服务器·python·k8s·k3s
liuccn13 小时前
Linux 存储系统:LVM 与直接分区
linux·运维