交叉编译
什么是交叉编译?
交叉编译是在一台机上编译,编译生成的可执行程序在另一台机上运行。
如c51单片机的可执行程序,在pc机上编译,下载到C51上执行
为什么需要交叉编译?
1. 因为目标机上资源贫乏,无法运行我们的编译器。
难道由编译器的平台就不用编译器了吗(如树莓派)?
不对,因为树莓派的操作系统也要在pc机上交叉编译完成才能在目标机上运行
2. 目标机和宿主机的架构不同。
a. 不同架构的cpu就可能存在高低电平表示方式不同,如有些架构用1来表示高电平,有些架构用1来表示低电平;
b. 不同架构的cpu,指令集可能也不一样;程序在内存中是以指令和数据的形式存在的,不同的指令集就可能会把相同的源程序翻译成不同的指令。如x86架构用cisic(复杂指令集)、arm用risc(精简指令集)。
交叉编译要用交叉编译工具链。即不同的目标平台需要不同的交叉编译工具链。
如果我们想生成目标机(如树莓派)的可执行程序,就得在电脑上安装能编译出目标机可执行程序的交叉编译工具链(树莓派的交叉编译工具链)。
这样在pc机中就可以通过交叉编译工具链编译出在目标机上可执行的程序。