572 字
3 分钟
交叉编译

交叉编译#

交叉编译的概念#

宿主机和目标机#

宿主机(Host) 是我们编辑和编译程序的平台,一般是基于 X 86 的 PC 机,也被称为主机。

目标机(Target)是我们的目标运行环境,通常是非 X86 平台的设备,如树莓派,开发板之类的

什么是交叉编译#

交叉编译是指在一台计算机上进行编译,生成在另一种不同体系结构或操作系统上运行的可执行程序或库文件。它通常用于开发跨平台的软件,或者在资源有限的嵌入式系统上进行开发。

在传统的编译过程中,源代码会被编译成针对本地操作系统和硬件体系结构的机器码。而交叉编译则允许我们在一台计算机上使用特定的工具链,将源代码编译成针对目标平台的机器码。

编译工具链和目标程序运行相同的架构平台,就叫本地编译

编译工具链和目标程序运行在不同的架构平台,叫做交叉编译

为什么要交叉编译#

平台上不允许或者不能安装我们所需要的编译器:有些平台由于硬件资源限制(如CPU、内存)性能不足或者操作系统的限制,无法直接安装和运行编译器。在这种情况下,我们需要在一台性能更强的主机进行编译,生成目标机可执行的代码。

GCC 名字含义解析?#

image.png

arm-linux-gnueabihf-gcc-8 对比 arm-none-eabi-gcc

  • 第一项表示架构
  • 第二项: linux 或 none, 表示编译出来的程序会在 linux 系统上运行;或代码直接运行在硬件上,而不依赖操作系统,例如 uboot 程序就是如此编译的
  • 第三项:遵循 GNU 开发标准 eabi:应用嵌入式应用二进制标准接口 hf:支持硬浮点平台

如何安装想要的 GCC 类型#

  • Apt install gcc 会自动安装对应当前系统和架构的 gcc
  • 若需要安装特定 gcc 则需要指定某个 gcc、
  • 可在 linaro 官网找到想要的系统和架构版本 gcc
交叉编译
https://scudays.github.io/posts/embedded-linux/交叉编译/
作者
Days
发布于
2024-12-26
许可协议
CC BY-NC-SA 4.0