交叉编译cross compiling

系统 1666 0

什么是交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓
平台,实际上包含两个概念:体系结构( Architecture )、操作系统( Operating System )。同一个体系结
构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。

 

嵌入式系统往往资源都是很有限的,如果其资源和我们平常用的桌面计算机(在嵌入式系统开发中我们称之为主机, host machine )一样,那我想可能就不存在交叉编译这么一说了。最为典型的是,嵌入式系统的内存往往是几兆字节,且只有 FLASH 而没有硬盘这种大容量存储设备。也就是说在这种资源有限的环境中,我们 不可能 将我们的开发工具安装在嵌入式设备中(在嵌入式系统开发中我们称之为目标机, target machine ),然后象我们平时做桌面开发那样,在上面进行编码、调试最后发布软件。

 

现实情况是,嵌入式系统的开发是在主机上进行的,那就存在一个问题:当我们的目标机处理器与主机的处理器不同时(比如目标机是 ARM 处理器,而主机是 x86 处理器),在这种请况下,如何保证在主机上编译的程序能在目标机上运行呢? 答案在于编译器上 !我们说嵌入式开发用的编译器与我们平时做桌面开发的编译器是不同的,在平时,我们的编译器是运行在什么处理器上,其编译出来的可执行程序也是运行在同样的处理器上的。实际上, 我们可以让一个编译器运行在 x86 主机上,却编译出可以在 ARM 上运行的可执行程序 ,这种编译器就是交叉编译器( cross compiler ),而采用交叉编译器进行编译就是指交叉编译( cross compiling ),而交叉编译器相关的环境就是指交叉编译环境( cross compiling environment )。

 

举一个例子,这个例子就是 VxWorks 一种嵌入式实时操作系统 )的 Workbench (在早期版本中是 Tornado 协同仿真环境 )。这是一个 VxWorks 的开发环境,其除了采用 Eclipse 作为 IDE 外,后面采用的是 GNU GCC 编译器进行程序编译。有人可能要问, GCC 能运行在 Windows 上?其实, GCC 不是直接运行在 Windows 上的, Workbench 采用 Cygwin windows 平台上运行的 unix 模拟环境 )作为其编译器的支撑环境,也就是说 GCC 及其 binutils 是运行在 Cygwin 上的。采用 Workbench 我们可以开发几乎所有主流处理器的嵌入式产品,而所有的工作都在 Windows 上完成的!

至此,相信你对交叉编译、交叉编译器和交叉编译环境有了很好的了解了。 

 

 

交叉编译cross compiling


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论