Linux内核模块

Eutopia's Blog

Posted by Eutopia on January 4, 2024

Linux内核模块

GCC

GNC C Compiler —> GNU Compiler Collection

  • 包括编译器、链接器、binutils、glibc、头文件
  • 支持多种语言(C、C++、Java、Go)和多种硬件平台(X86、ARM、MIPS、RISC-V)

Clang

编译器的构成

  • Frontend:源码分析、语法检查,输出中间代码
  • Optimizer:对中间代码进行优化、使其运行更高效
  • Backend:将中间代码转换为某一个平台的机器代码

编译器的实现

  • GCC:前端和后端分离,支持多种语言、多个平台。但缺点:前后端耦合高,代码可重用性低。
  • LLVM(Low Level Virtual Machine)框架:模块化设计,代码可重用性高;中间语言LLVM IR,类C表达可扩展各种前端、后端;支持C/C++/Java等语言
  • 使用LLVM框架的编译器:
    • LLVM GCC:前端使用GCC(Apple)
    • Clang:LLVM+Clang前端(使用C/C++)(Apple,Android)
    • 方舟编译器:编译优化(Java虚拟机,效率提高),鸿蒙系统