近期在看
1. C++ Primer
2. 深入理解 FFmpeg
3. 鸿蒙 sdk 开发
GCC和 LLVM 都是三段式编译的工作原理,分别是前端、优化器和后端。
- 前端负责解析源代码,检查语法错误,并将其翻译为抽象的语法树;
- 优化器对这一中间代码进行优化,试图使代码更高效;
- 后端则负责将优化器优化后的中间代码转换为目标机器的代码,这一过程后端会最大化的利用目标机器的特殊指令,
GCC 的编译过程如下:读取源文件,对源文件进行预处理,将其转换为 IR,优化并生成汇编文件。然后,汇编器生成一个目标文件。Clang 和 LLVM不依赖独立的编译器,而是在后端集成自实现的编译器。在生成目标文件的过程中省略了生成程序集文件的过程。目标文件直接从 IR 生成。此外,与 GCC IR 相比,LLVM IR 的数据结构更加简洁。它在编译期间占用较少的内存,并支持更快的遍历。因此,Clang 和 LLVM 在编译时间方面具有优势
Clang 目前有自己的 C 标准库 => libc
相关问题:What standard C library does Clang use? glibc, its own, or some other one?