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% 严丝合缝

相关推荐
乌恩大侠5 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
Mr.朱鹏6 小时前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
mengge.cloud6 小时前
存储技术基础小白教程
linux·运维·服务器·wpf·存储
tang777897 小时前
反爬虫场景下代理IP池的动态扩容与失效IP自动清理方案实现
linux·服务器·网络·爬虫代理·住宅代理ip
新时代牛马8 小时前
Linux 系统调用与IPC 完整篇:从syscall 入口、VDSO 到pipe/shm/futex 选型
linux·运维·服务器
小HANN10 小时前
Linux建站实战:CentOS7+LNMP 从零部署 ECShop 开源电商系统
linux·运维·服务器·经验分享
三84410 小时前
SSRF 从入门到实战:原理、危害与基础利用
服务器·网络安全·ssrf·#web安全
平原201811 小时前
GPT Image 2 / Nano Banana API成本拆解:$0.0081、84.7%与单张有效成本
linux·服务器·gpt
T1mzhou12 小时前
ARM64 Linux 6.10内核启动流程2-rootfs 怎么挂上
linux·服务器·前端
2301_8150910112 小时前
TCP 并发服务器模型:4 种 IO 模型完整梳理
服务器·网络·tcp/ip