1.为什么要用交叉编译工具链?
编译器和目标程序都是相同架构的编译过程,被称为 本地编译 。
编译器运行在x86架构平台上,编译生成ARM架构的可执行程序,这种编译器和目标程序运行在不同架构的编译过程,被称为 交叉编译。
既然已经有本地编译,为什么需要交叉编译?这是因为通常编译工具链对编译环境有较高的要求,编译复杂的程序时,可能需要巨大的存储空间以及强大的CPU运算能力加快编译速度。常见的ARM 架构平台资源有限,无论是存储空间还是CPU运算能力,都与X86平台相去甚远,特别是对于MCU平台,安装编译器根本无从谈起。有了交叉编译,我们就可以在PC上快速编译出针对其他架构的可执行程序。
相对的,能进行架构“交叉”编译过程的编译器,就被称为 交叉编译器(Cross compiler)。 交叉编译器听起来是个新概念,但在MCU开发中一直使用的就是交叉编译器, 例如开发STM32、RT1052所使用的IDE软件Keil(MDK)或IAR,就是在Windows x86架构编译,生成MCU平台的应用程序,最后下载到板子执行。
2.安装ARM-GCC
安装交叉编译工具链有如下三种方式:
-
直接在Ubuntu下使用APT包管理工具下载安装,但是只能下载最新版的。
-
自行下载第三方制作好的工具链,如Linaro,好处是选择丰富,能找到很多不同的版本。
-
使用crosstool-ng根据需要自己制作,过程复杂,不推荐。
</