1.交叉编译是什么
首先了解什么是编译?
编译:是在一个平台上生成在该平台上的可执行代码。
交叉编译:简单来说,就是在一个平台上生成另一个平台上的可执行代码。比如, 我们再windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在c51上面运行,不是在windows上面运行。再比如,我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,是在树莓派上面运行,不是在ubuntu linux上面运行。同时,C51、stm32交叉编译的发生在keil(集成环境上面)
2.为什么要交叉编译
(1)平台上不允许或不能够安装我们所需要的编译器比如C51,即因为目的平台上的资源贫乏,无法运行我们所需要编译器。
(2)树莓派是不是就不需要交叉编译?
错。也需要 ,树莓派有时又是因为目的平台还没有建立,连操作系统都没有,操作系统也是代码,也要编译!根本谈不上运行什么编译器。
注:平台运行需要两样至少东西:bootloader(启动引导代码)以及操作系统核心
这里涉及到宿主机(host)和目标机(target):
宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。
目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。
比如我们在Ubuntu上交叉编译生成可执行代码,并将该代码在树莓派上运行。其中Ubuntu就是宿主机,树莓派就是目标机。
3.交叉编译需要什么工具、如何安装?
顾名思义,交叉编译需要用到交叉编译器、交叉编译工具链。交叉编译器、交叉编译工具链下载网址:https://github.com/raspberrypi/
下载tools-master.zip后,具体安步骤如下:
(1)从共享文件夹拷贝到工作目录
cp /mnt/hgfs/share/tools-master.zip .
(2)解压
unzip tools-master.zip
(3)获得交叉编译工具链路径
cd /home