【Embedded】Cross Compile

在这里插入图片描述


交叉编译器是什么意思?

在这里插入图片描述

在这里插入图片描述


一、先讲一个故事 🎮

想象你在用一台电脑(Windows)写程序,就像:

👉 你在写一封“说明书”

但是这个说明书不是给电脑看的,而是给一个小机器人看的 🤖

这个机器人有一个特点:

👉 它只听得懂“ARM语言”(比如扫地机、路由器、嵌入式板子)


二、问题来了

你现在的电脑(比如用 GCC):

👉 只会把代码翻译成“电脑能听懂的话”(x86)

但你的机器人需要的是:

👉 ARM 能听懂的话


三、交叉编译器是什么?

👉 交叉编译器 = 翻译官

它的能力是:

在 A 电脑上
生成 B 设备能运行的程序

四、直观的流程图

🧠 PC → 交叉编译 → ARM设备运行(完整流程)

        👨‍💻 开发者(你)
               │
               │ 写代码(C / C++)
               ▼
        ┌───────────────────┐
        │      hello.c      │
        └───────────────────┘
               │
               │ 在 PC 上(Windows / Linux)
               ▼
        ┌──────────────────────────────┐
        │   ARM 交叉编译器             │
        │ arm-linux-gnueabihf-gcc      │
        └──────────────────────────────┘
               │
               │ 编译(Cross Compile)
               ▼
        ┌───────────────────┐
        │   可执行文件      │
        │   hello (ARM版)   │
        └───────────────────┘
               │
               │ 传输(scp / adb / U盘)
               ▼
    ┌────────────────────────────┐
    │      ARM设备(目标板)      │
    │  扫地机 / 树莓派 / 摄像头   │
    └────────────────────────────┘
               │
               │ 运行
               ▼
        ┌───────────────────┐
        │   ./hello         │
        │  输出结果运行     │
        └───────────────────┘

🔍 再用一句“工程人思维”解释

PC(开发环境)
   ↓
交叉编译器(生成目标架构代码)
   ↓
ARM可执行程序(不能在PC运行)
   ↓
拷贝到设备
   ↓
ARM设备运行

⚠️ 很关键的理解点

1️⃣ 生成的程序在哪能跑?

编译方式能运行在哪
gcc你电脑(x86)
arm-gccARM设备

👉 不能混用!


2️⃣ 为什么不能直接在 ARM 上写?

因为:

  • ARM设备性能弱 🐢
  • 没键盘 / 开发环境差
  • 编译很慢

👉 所以才要“交叉编译”


五、例子

你写了:

printf("hello\n");

普通编译

gcc hello.c -o hello.exe

👉 只能在你电脑运行


ARM32 交叉编译

arm-linux-gnueabihf-gcc hello.c -o hello

👉 生成的程序:

  • ❌ 电脑打不开
  • ✅ ARM设备可以运行

六、一个非常关键的直觉

👉 编译器名字里一般就写着“目标是谁”

比如:

arm-linux-gnueabihf-gcc
↑
ARM + Linux

意思就是:

👉 “我要生成 ARM Linux 能运行的程序”


🎯 一句话记住

👉 交叉编译 = 在“这里”做饭,但给“别的地方的人”吃

👉 你在 PC 上编译,但程序是给 ARM 设备准备的

👉 ARM32 交叉编译器 = 在你的电脑上,把代码编译成 ARM 设备能运行的程序


延伸阅读——架构

在这里插入图片描述


一、什么是“架构”?(最核心)

👉 架构 = CPU 能听懂的“语言规则”

就像:

  • 人说中文 / 英文
  • CPU 也有自己的语言

这个语言在计算机里叫:

👉 Instruction Set Architecture(指令集架构)


二、ARM 和 x86 是什么?

🧠 1️⃣ ARM architecture

👉 特点:

  • 省电 ⚡(超级重要)
  • 结构简单
  • 常用于小设备

👉 常见设备:

  • 手机 📱
  • 扫地机 🤖
  • 路由器 📡
  • 树莓派 🍓

👉 形象理解:

ARM = 轻量、省电的小机器人语言

💻 2️⃣ x86 architecture

在这里插入图片描述

👉 特点:

  • 功能复杂
  • 性能强 💪
  • 功耗高

👉 常见设备:

  • 台式机 🖥️
  • 笔记本 💻
  • 服务器 🏢

👉 形象理解:

x86 = 强壮但耗电的大型电脑语言

三、它们的本质区别(简单版)

对比ARMx86
风格简单复杂
功耗
指令
设计思想精简(RISC)复杂(CISC)

👉 对应两个概念:

  • RISC
  • CISC

四、那 51 单片机是什么架构?

👉 经典的:

🔧 MCS-51(也叫 8051 架构)


👉 特点:

  • 非常简单(上古级别)
  • 资源极少
  • 专门用于控制

👉 常见用途:

  • LED 灯控制 💡
  • 电饭煲 🍚
  • 遥控器 📺
  • 简单嵌入式系统

👉 形象理解:

51单片机 = 超基础的小机器人(功能简单但稳定)

五、还有别的架构吗?(有,而且很多)

常见的你可以知道这些:


🧩 1️⃣ RISC-V

👉 特点:

  • 开源免费 🔥
  • 越来越流行

👉 中国、AI芯片很多在用


🍎 2️⃣ Apple 芯片(本质还是 ARM)

比如:

  • M1 / M2 / M3

👉 本质:

ARM 架构 + 苹果自己改造

🕰️ 3️⃣ MIPS(以前很火)

👉 用于:

  • 路由器
  • 早期嵌入式

🧠 4️⃣ DSP / GPU 架构

👉 用于:

  • 图像处理
  • AI计算

六、最关键的一句话

👉 架构决定:程序能在哪个设备上运行


七、终极类比(最容易记住)

架构类比
x86大型电脑(强壮)
ARM手机(省电)
51小玩具控制器

八、一句话总结

👉 ARM / x86 / 51 本质都是不同的“CPU语言”,决定程序在哪运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值