ARCH与交叉编译器的关系

编译器只是一台"翻译机",它自己没有思想,它只会机械地把输入的 .c 文件翻译成机器码。而决定"把哪些 .c 文件喂给它翻译"的,是构建系统(Makefile)

关键机制

当你执行 make 时,总管会先看 ARCH 环境变量

  • 如果 ARCH=arm,总管就把 arch/arm/ 这个目录下的 .c 文件列表,列成清单,塞给 arm-gcc 去翻译。

  • 如果 ARCH=x86,总管就无视 arch/arm/,把 arch/x86/ 目录下的 .c 文件塞给 arm-gcc 去翻译

ARCH=arm 决定了"哪些代码属于体系相关部分",而 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% 严丝合缝

相关推荐
谢慧琼3 小时前
2026零基础做企业网站,低成本搭建官方网站
服务器·前端·javascript
世人万千丶6 小时前
去重插入与超限淘汰:ArkTS 实现鸿蒙搜索历史的 LIMIT 艺术
运维·服务器·学习·华为·harmonyos·鸿蒙
程序员与背包客_CoderZ6 小时前
Linux D-Bus通信协议详解:从入门到C/C++编码实战
linux·服务器·c语言·c++·嵌入式硬件·嵌入式软件·dbus
Android系统攻城狮7 小时前
Linux PipeWire深度解析之pw_properties_iterate调用流程与实战(六十五)
linux·运维·服务器·音频进阶·pipewire音频进阶
ITyunwei09878 小时前
内存溢出报错,实战处理记录
运维·服务器·企业微信
谷哥的小弟9 小时前
腾讯云服务器安装Redis Stack图文教程
服务器·redis·腾讯云·redis stack
发量惊人的中年网工9 小时前
中小企业网络管理进阶:从设备堆叠到统一管理
服务器·网络·安全·网络安全·php·制造
jason.zeng@15022079 小时前
linux的top命令
java·linux·服务器
RisunJan10 小时前
Linux命令-talk(终端实时对话)
linux·运维·服务器