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

相关推荐
小白的码BUG之路7 小时前
linux -- ssh两台机器相连
运维·服务器·ssh
缓慢更新9 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
续写烂尾9 小时前
贴片 SD NAND、eMMC、TF 卡规格怎么定?硬件工程师选型清单
运维·服务器·网络
科技小E9 小时前
监控设备品牌杂乱无法互通?EasyGBS打通孤岛,统一汇聚视频
服务器·网络·音视频
weixin1997010801611 小时前
《抖音商品API:/product/detail 与 /product/list 的字段边界与图片合规踩坑》(附 Python 源码)
服务器·网络·windows
云飞云共享云桌面11 小时前
设计师共享单台图形服务器,解决 SolidWorks大装配卡顿难题
运维·服务器·3d·自动化·电脑·制造
无足鸟ICT12 小时前
【RHCA+】RPM包命名规则
linux·运维·服务器
小羊没烦恼!12 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
xixingzhe213 小时前
Nginx 看懂请求耗时瓶颈
服务器·前端·nginx
chu_bingzhi13 小时前
ARMv8体系结构
arm