3 工具链(Toolchain)
设置工具链在主机机器上创建一个用于编译将在目标上运行的内核和应用程序的构建环境—--这是因为目标硬件可能没有与主机兼容的二进制执行级别。
工具链由一套用于编译、汇编和链接内核及应用程序的组件组成。 这些组件包括:
Binutils — 用于操作二进制文件的实用程序集合。它们包括诸如 ar 、 as 、 objdump 、 objcopy 这样的实用程序 ;
Gcc — GNU C 编译器 ;
Glibc — 所有用户应用程序都将链接到的 C 库。避免使用任何 C 库函数的内核和其它应用程序可以在没有该库的情况下进行编译。
构建工具链建立了一个交叉编译器环境。本地编译器编译与本机同类的处理器的指令。交叉编译器运行在某一种处理器上,却可以编译另一种处理器的指令。 从 头设置交叉编译器工具链可不是一项简单的任务:它包括下载源代码、修补补丁、配置、编译、设置头文件、安装以及很多很多的操作。另外,这样一个彻底的构建过程对内存和硬盘的需求是巨大的。如果没有足够的内存和硬盘空间,那么在构建阶段由于相关性、配置或头文件设置等问题会突然冒出许多问题。
因此能够从因特网上获得已预编译的二进制文件是一件好事(但不太好的一点是,目前它们大多数只限于基于 ARM 的系统,但迟早会改变的)。一些比较流行的已预编译的工具链包括那些来自 Compaq ( Familiar Linux )、 LART ( LART Linux 和 Embedian (基于 Debian 但与它无关)的工具链 — 所有这些工具链都用于基于 ARM 的平台。 Intel 的PXA255芯片就是基于ARM设计的。
Binutils — 用于操作二进制文件的实用程序集合。它们包括诸如 ar 、 as 、 objdump 、 objcopy 这样的实用程序 ;
Gcc — GNU C 编译器 ;
Glibc — 所有用户应用程序都将链接到的 C 库。避免使用任何 C 库函数的内核和其它应用程序可以在没有该库的情况下进行编译。
构建工具链建立了一个交叉编译器环境。本地编译器编译与本机同类的处理器的指令。交叉编译器运行在某一种处理器上,却可以编译另一种处理器的指令。 从 头设置交叉编译器工具链可不是一项简单的任务:它包括下载源代码、修补补丁、配置、编译、设置头文件、安装以及很多很多的操作。另外,这样一个彻底的构建过程对内存和硬盘的需求是巨大的。如果没有足够的内存和硬盘空间,那么在构建阶段由于相关性、配置或头文件设置等问题会突然冒出许多问题。
因此能够从因特网上获得已预编译的二进制文件是一件好事(但不太好的一点是,目前它们大多数只限于基于 ARM 的系统,但迟早会改变的)。一些比较流行的已预编译的工具链包括那些来自 Compaq ( Familiar Linux )、 LART ( LART Linux 和 Embedian (基于 Debian 但与它无关)的工具链 — 所有这些工具链都用于基于 ARM 的平台。 Intel 的PXA255芯片就是基于ARM设计的。