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

相关推荐
晊晌_h15 分钟前
IMX6ULL裸机开发:定时器(GPT/EPIT)与UART串口
arm·定时器·arm裸机开发
百万蹄蹄向前冲30 分钟前
双端同步!云服务器装最新Node.js v26.10全过程追踪
服务器·人工智能·node.js
幼儿园蛋小黑5 天前
ARM 时钟与定时器详解:从原理到实践
arm
虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
幼儿园蛋小黄5 天前
从定时器到时钟:ARM 嵌入式学习总结
arm
-梅6 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog6 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
琥珀色糖6 天前
SimlpeHttp
linux·服务器
第十人i6 天前
Linux 日志管理系统:journald 配置与优化
linux·服务器
祖力556 天前
ARM时钟
嵌入式硬件·arm·时钟·imx6ull