什么是“交叉编译”

>>背景知识
1、高级编程语言与机器代码语言
1.1、高级编程语言是指符合人类思维的被程序员直接用来编程语言(如C语言:使用特定语句直接实现诸如条件判断分叉执行、条件判断循环执行、加减乘除取余移位运算、与或非逻辑运算等。高级编程语言直接面向人类思维)。
1.2、机器代码语言
机器(指电子计算机)是通过存储单元的通电断电(或磁化与消磁)等具有对立关系的二进制物理形式来记录与处理数据信息的。它所能直接识别与执行的代码也必须与此相对应:是二进制的机器代码语言。
1.3、那么在面向人类思维的高级编程语言与机器可识别与执行的机器代码之间就需要一种“组织与翻译”的过程——编译与连接。
 
2、编译与链接
2.1、编译可以简单的理解成不同语言代码之间的“翻译”。它把高级编程语言的载体:源文件“翻译”成对应的目标文件。
2.2、为了方便起见,不是所有的程序都需要从头开始编写,有些通用的程序会被写成标准化的文件打包成库以成为公用数据存放在“静态库”中。将指定的数据库中的文件与各个翻译好的源文件组合为一体成为一个机器代码语言文件(可执行文件)的过程称为“链接”。
2.3、一般情况下,编译链接是一气呵成的。能够完成对程序源文件的编译与对编译后的目标文件与库文件间链接功能的软件称为“编译器”。
 
3、可执行文件与运行平台
3.1、编译器最终生成的可执行文件对不同的系统平台是敏感的(即不同系统平台需要不同的可执行文件格式)。比如windows系统平台与嵌入式系统平台上运行的可执行文件就是不同的。
3.2、最理想的状况就是在那个系统平台上运行可执行文件就在哪个平台上进行编译(本地编译)。但实际使用中这种条件往往不满足或者没必要满足(如嵌入式平台上还没有搭建起一个完整的系统、或者嵌入式系统软硬件资源有限不能运行编译器),这是就需要引入“交叉编译”来解决这个矛盾。
 
 
>>交叉编译
1、交叉编译是指在PC平台上运行编译软件,编译链接操作后生成另一个平台(如基于arm架构的嵌入式系统)上能够运行的可执行文件。是一种“异地编译”。
2、运行编译软件的平台称为宿主机(host),能够运行可执行文件的平台称为目标机(target)。
 
>>关于交叉编译的实现请参考下一篇博文“编译环境的搭建”。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值