ARCH与交叉编译器的关系

发布时间:2026/8/16 6:12:04
ARCH与交叉编译器的关系 编译器只是一台“翻译机”它自己没有思想它只会机械地把输入的 .c 文件翻译成机器码。而决定“把哪些 .c 文件喂给它翻译”的是构建系统Makefile关键机制当你执行make时总管会先看ARCH环境变量。如果ARCHarm总管就把arch/arm/这个目录下的.c文件列表列成清单塞给arm-gcc去翻译。如果ARCHx86总管就无视arch/arm/把arch/x86/目录下的.c文件塞给arm-gcc去翻译ARCHarm决定了“哪些代码属于体系相关部分”而CROSS_COMPILE决定了“如何将体系无关 体系相关两部分代码翻译成硬件能跑的指令”体系无关的代码骨架位于kernel/、mm/、fs/、net/等目录。它负责“通用逻辑”比如进程调度算法CFS、虚拟内存换页LRU、文件系统的 inode 管理。特点只写逻辑不碰硬件寄存器。写这些代码的人不需要知道 CPU 是 ARM 还是 x86只看重算法。体系相关的代码皮肤/血管位于arch/arm/、arch/x86/目录。它负责“硬件触达”比如 CPU 上电第一条汇编指令head.S、中断控制器GIC初始化、MMU 页表填充、具体 CPU 的 Cache 操作。特点赤裸裸地操作物理地址和特定寄存器。这段代码必须和 CPU 架构 100% 严丝合缝