交叉编译 概念

什么是交叉编译?

交叉编译是一个动作。

交叉编译是在一个平台上生成另一个平台上的可执行代码。
同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。

举例来说,我们常说的x86 Linux平台实际上是
Intel x86体系结构和Linux for x86操作系统的统称;
而x86 WinNT平台实际上是Intel x86体系结构和
Windows NT for x86操作系统的简称。

编译:在一个平台上生成在该平台上可执行的代码。

比如

C51 与Stm32 的代码在keil(集成环境)中运行。
这种编译就是交叉编译
在Windows中编译C51的代码,生成了在C51单片机中的执行程序。
.hex文件。

为什么要交叉编译

目的平台上不允许或不能够安装我们所需要的编译器
比如C51;51单片机内存很小,在其上面根本无法写代码,没有编译工具。
目的平台上的资源贫乏,无法运行我们所需要编译器。
树莓派的内存比较大,大约有1G,那么它是否就不需要交叉编译呢?

错,也要进行交叉编译。有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。

平台运行至少需要两样东西;
bootloader (启动引导代码)以及操作系统的核心
对于树莓派来说,这两者是在pc的Ubuntu上进行编译,而在树莓派上运行。
这就是交叉编译

宿主机与目标机

宿主机(host) : 编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。
目标机(target): 用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。

交叉编译需要用到的工具

交叉编译器\交叉编译工具链

要进行交叉编译,
我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译我们的源代码,
最终生成可在目标平台上运行的代码。
常见的交叉编译例子如下:
1、在Windows PC上,利用ADS(ARM开发环境),
使用armcc编译器,则可编译出针对ARM CPU的可执行代码。
2、在Linux PC上,利用arm-linux-gcc编译器,
可编译出针对Linux ARM平台的可执行代码。
3、在Windows PC上,利用cygwin环境,
运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值