使用 Clang/LLVM 构建 Linux 内核
概述
Linux 内核是用 C 语言编写的,但其并不完全符合 ANSI C 标准,实际上,内核开发者使用的 C 语言涵盖了 ISO C99 标准和 GNU C 扩展特性,这使得内核的构建长期依赖 gcc。
Clang 和 LLVM 的持续性工作改变了这种现状,使得其可作为构建内核的替代工具。一些发行版,例如 Android、ChromwOS、OpenMandriva 等都在使用 Clang 编译的内核。
关于 LLVM 的简单介绍,参考 [LLVM 项目介绍]。Clang 是 LLVM 的前端,支持 C 语言和内核所需要的 GNU C 扩展。
使用 LLVM 构建
工具准备
安装 LLVM 和 对应的链接器 lld: $ sudo apt-get install clang lld,该命令会自动安装所依赖的其他软件包。
构建
1 | make CC=clang LD=ld.lld AR=llvm-ar NM=llvm-nm STRIP=llvm-strip \ |
目前支持的架构参考 使用 Clang/LLVM 构建 Linux。
使用 lldb 调试
安装 LLVM 的调试器 lldb