交叉编译简介

交叉编译是在一种平台上编译出能在不同体系结构的目标平台运行的程序。这种技术常用于嵌入式系统,如从x86平台编译运行在ARM上的程序。交叉编译存在的原因包括目标平台速度较慢、资源有限以及灵活性需求。它允许开发者在资源充足的主机上编译,而无需在目标平台进行资源密集型的编译工作。
摘要由CSDN通过智能技术生成

第 1 章 交叉编译简介

1.1 什么是交叉编译

        对于没有做过嵌入式编程的人,可能不太理解交叉编译的概念。在解释什么是交叉编译之前,先要明白什么是本地编译。

本地编译

本地编译可以理解为,在当前编译平台下,编译出来的程序只能放到当前平台下运行。平时我们常见的软件开发,都是属于本地编译:

比如,我们在 x86 平台上,编写程序并编译成可执行程序。这种方式下,我们使用 x86 平台上的工具,开发针对 x86 平台本身的可执行程序,这个编译过程称为本地编译。

为什么有时候编译出来的程序只能在本地平台运行,不能在其他平台上运行?

交叉编译

        交叉编译可以理解为,在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序。

        我们常说的跨平台,通常是指操作系统和cpu的组合。比如从同一台PC的windos到虚拟机上的ubuntu是跨平台(跨操作系统);从虚拟机上的ubuntu编译程序给stm32单板用也是跨平台(从x86架构的cpu到arm架构的cpu)。

扫盲回帖系列之3——在windows下编译生成的程序为什么不能在ubuntu下运行呢?-CSDN博客

        比如,我们在 x86 平台上,编写程序并编译成能运行在 ARM 平台的程序,编译得到的程序在 x86 平台上是不能运行的,必须放到 ARM 平台上才能运行。

        最常见的就是我们在个人pc上(x86架构)编译出运行在嵌入式arm开发板上(stm32,或者其他arm板)的代码,基本上全都是交叉编译。

1.2 为什么会有交叉编译

之所以要有交叉编译,主要原因是:

  • Speed: 目标平台的运行速度往往比主机慢得多,许多专用的嵌入式硬件被设计为低成本和低功耗,没有太高的性能
  • Capability: 整个编译过程是非常消耗资源的,嵌入式系统往往没有足够的内存或磁盘空间
  • Availability: 即使目标平台资源很充足,可以本地编译,但是第一个在目标平台上运行的本地编译器总需要通过交叉编译获得
  • Flexibility: 一个完整的Linux编译环境需要很多支持包,交叉编译使我们不需要花时间将各种支持包移植到目标板上

参考:

交叉编译详解-CSDN博客

【转】ARM交叉编译工具链 - wi100sh - 博客园 (cnblogs.com)

在Ubuntu上搭建树莓派交叉编译环境-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值