1.4. crosstool-ng的特点

下面,根据我的了解,整理一下,crosstool-ng,作为一个交叉编译器的制作工具,所具有的优点:

1.4.1. 支持(类似于Linux内核配置的那个)menuconfig

menuconfig,用的最为广泛,支持度最好,最好用。

menuconfig可以称为:即简单,又好用。

用过的都知道。

关于make menuconfig,不熟悉的可以参考:

【整理】make config,make menuconfig,make oldconfig,make xconfig,make defconfig,make gconfig

1.4.2. 支持足够多,且越来越多的架构(architecture)

目前已经支持众多了架构了:

Alpha, ARM, AVR32 (EXP), Blackfin (EXP), MIPS, OpenRISC/or32(+), PowerPC, s390, SPARC (EXP), SuperH (EXP), x86

且以后会支持越来越多。

相比较而言,之前的交叉编译器制作工具,支持的架构,比crosstool-ng更多,好像没几个。

1.4.3. 支持工具链中可选多种不同的C库等模块

支持基于uClibc, glibc或eglibc的工具链

支持其他类型的,也很容易添加

详见:第 3.3.2.2.9 节 “crosstool-ng中的配置参数:C库的选择”

1.4.4. 支持不同目标OS平台

支持2种目标运行环境:

Linux

bare metal

详见:交叉编译器名字中的kernel部分

1.4.5. 补丁仓库

为许多种现存的,已知bug的,需要打包的各种模块,提供了一个补丁仓库。

如此可以实现:可以自动去帮你打上,已知的,需要打补丁的各种模块

从而,避免了各种编译的错误,制作出来的交叉编译器的各种问题

极大程度上的节省了你的精力和时间,和降低了制作交叉编译器的难度

1.4.6. 支持不同的线程模型

支持2种线程模型:

NPTL

linuxthreads

详见:第 3.3.2.2.10 节 “crosstool-ng中的配置参数:线程模型的选择”

1.4.7. 支持软浮点和硬件浮点

详见:第 3.3.2.2.4 节 “crosstool-ng中的配置参数:浮点处理单元FPU”

1.4.8. 支持multlib的工具链(暂处于试验阶段)

1.4.9. 支持众多调试相关的内容

支持很多用来调试(debug)的工具:

本地的和跨平台的gdb,gdbserver

调试库:dmalloc, duma

以及一些其他功能,比如从编译失败的那一步,恢复重新编译,从而节省你的大量的时间和精力

详见:第 3.3.1 节 “crosstool-ng工具相关的配置参数”中的:

第 3.3.1.1 节 “多线程编译以节省时间”

第 3.3.1.2 节 “从之前错误的那一步恢复继续编译”

1.4.10. 提供示例配置

背景是:对于交叉编译器的配置,涉及到各个模块的各个版本,自己配置不好的话,很容易出现各种问题,比如版本不兼容

而此处提供了,很多个,已经经过验证的配置,针对各个架构(CPU)的各种默认配置

如此,你就可以利用已有的配置,从而简化你的配置的复杂度,极大的降低了你制作交叉工具链的难度,时间,精力。

详见:第 3.1.3 节 “用ct-ng list-samples查看当前已包含哪些默认的示例配置”

1.4.11. 支持多种主机编译环境:各种Linux发行版,Cygwin等

crosstool-ng,不仅支持,普通的各种Linux发行版,比如常见的Ubuntu

还支持Cygwin

这意味着,在纯的Windows环境下

(用Cygwin模拟Linux环境,在Cygwin下制作交叉编译器等等,在Cygwin下用交叉编译器去编译uboot,kernel等等)

也可以去折腾嵌入式开发了