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虚拟机,效率提高),鸿蒙系统
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Small Utopia!
评论