交叉编译

什么是交叉编译?

  交叉编译是在一台机上编译,编译生成的可执行程序在另一台机上运行。

  如c51单片机的可执行程序,在pc机上编译,下载到C51上执行

为什么需要交叉编译?

  1. 因为目标机上资源贫乏,无法运行我们的编译器。

  难道由编译器的平台就不用编译器了吗(如树莓派)?

    不对,因为树莓派的操作系统也要在pc机上交叉编译完成才能在目标机上运行

  2. 目标机和宿主机的架构不同。

    a. 不同架构的cpu就可能存在高低电平表示方式不同,如有些架构用1来表示高电平,有些架构用1来表示低电平;

    b. 不同架构的cpu,指令集可能也不一样;程序在内存中是以指令和数据的形式存在的,不同的指令集就可能会把相同的源程序翻译成不同的指令。如x86架构用cisic(复杂指令集)、arm用risc(精简指令集)。

 

交叉编译要用交叉编译工具链。即不同的目标平台需要不同的交叉编译工具链。

 

如果我们想生成目标机(如树莓派)的可执行程序,就得在电脑上安装能编译出目标机可执行程序的交叉编译工具链(树莓派的交叉编译工具链)。

这样在pc机中就可以通过交叉编译工具链编译出在目标机上可执行的程序。

posted @ 2023-04-12 22:24  踏浪而来的人  阅读(102)  评论(0编辑  收藏  举报