前言在嵌入式Linux开发中,交叉编译工具链是基础核心,arm‑linux‑gcc(GCC工具链) 和LLVM‑Clang是目前两大主流编译器方案。容易混淆概念:GCC是完整的编译器套件;LLVM是编译器后端框架,Clang是LLVM生态下C/C++前端。完整可用的LLVM‑C/C++编译器 = Clang(前端) + LLVM后端 + LLD(LLVM链接器)。一、底层架构 核心原理1.1 GCC:单体紧耦合架构GCC属于一体式黑盒编译器,前端、优化器、后端内部深度绑定,组件无法拆分单独使用。GCC内部编译链路:源码 → 预处理 → GENERIC (高层 AST) → GIMPLE (中级 IR) → RTL (底层 IR) → 汇编 → 目标文件内部存在三套IR:GENERIC / GIMPLE / RTL,全部属于程序运行时内部数据结构,默认不能导出、不能直接查看编辑。各个模块共享大量全局状态,修改一处功能很容易引发连锁BUG。优化器和CPU硬件后端强耦合。1.2 LLVM:模块化解耦架构LLVM最大设计思想就是前后端彻底解耦