第18章建立交叉编译工具链工欲善其事,必先利其器
嵌入式Linux开发不能缺少的就是开发工具,其中最基本的是编译工具
和传统的编译方式不同,嵌入式系统开发需要在不同的计算机上编译出开发板需要的程序,所用的编译工具也与传统的编译工具不同
本章讲解如何构建嵌入式Linux开发需要的交叉编译工具链,主要内容如下:交叉编译工具链介绍手工构建交叉编译工具链使用脚本构建交叉编译工具链交叉编译工具链常见的问题18
1什么是交叉编译交叉编译是伴随嵌入式系统的发展而来的,传统的程序编译方式,生成的程序直接在本地运行,这种编译方式称作本地编译(NativeCompilation);嵌入式系统多采用交叉编译的方式,在本机编译好的程序是不能在本机运行的,需要通过特定的手段(例如烧写,下载等)安装到目标系统上执行
这种编译运行的方法比较繁琐,是受到实际条件限制的
大多数的嵌入式系统目标板系统资源都很有限,无论是存储空间还是CPU处理能力,都很难达到编译程序的要求
而且很多目标板是没有操作系统的,需要通过其他的机器编译操作系统和应用程序
2需要哪些东西建立交叉编译工具链可以在多种平台上进行,本书建议使用x86体系结构的PC机,在Linux系统下进行
这种选择不是强制的,是因为x86体系结构是使用最广泛的
同时,使用Linux系统可以避免许多开发环境的设置
建立交叉编译工具链需要以下的准备:磁盘空间:源代码:命令行:其他工具:18
3手工创建工具链构建交叉编译器首先是确定目标平台
在GNU系统,每个目标平台都有一个明确的格式和名称,这些信息可以在构建工具的过程中识别工具的正确版本
因为编译交叉工具链的过程中会有两套编译器环境,明确了平台名称和格式才能保证生成工具不出错
在运行gcc的时候,gcc会在路径中查找包含指定目标规范的应用程序路径
GNU的目标规范格式为CPU-PLATFORM-OS