buildroot用户指南 联系客服

发布时间 : 星期五 文章buildroot用户指南更新完毕开始阅读eb98d3b3aeaad1f346933fad

buildroot用户指南

目录

第三章 使用Buildroot来工作

3.1.1交叉编译工具链

编译工具链一套工具的集合,允许您为您的系统编译代码。它由一个编译器(在我们的例子中,gcc),二进制组件例如汇编器和链接器(在我们的例子中,binutils)和C标准库(例如GNU Libc、uClibc)。安装在您的开发站上的系统必定已经有了一套编译工具链,您可以使用它来编译应用程序在您的系统上运行。如果你使用电脑,你的编译工具链运行在x86处理器上,那么生成

代码是运行在x86处理器上的。在大多数Linux系统,编译工具链使用GNU libc(glibc)作为标准 库。这种编译工具链被称为“主机编译工具链”。这台x86电脑就被称为“主机系统”。 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

编译工具链是您的发行版所提供的,这与Buildroot无关(除了用它来建立一个 交叉编译工具链和运行在开发主机上的其他工具)。

Buildroot为交叉编译工具链提供了两种解决方案:

内部工具链后端,它在配置界面中被称为Buildroot toolchain。 外部工具链后端,它在配置界面中被称为External toolchain。

这两个方案的选择是由Toolchain菜单中的Toolchain Type来决定的。一旦一个 方案被选择,那么与之相关的许多配置选项就会出现,它们在下面几节作详细讨论。 3.1.1.1 内部工具链后端

内部工具链后端是一个后端,在这个后端里,Buildroot会在为你的目标嵌入式系统编译用户空间的应用和库之前,靠自己来构建一个交叉编译工具链。

这个后端支持几种C库:uClibc,glibc,eglibc。

一旦你选择了这个后端,那么与之相关的许多配置选项就会出现。最重要的一些允许您: 更改被用来构建工具链的Linux内核头文件的版本。被用于构建你的工具链的Linux内核头文件的版本并不需要与你打算运行在你的嵌入式系统上的Linux内核版本完全匹配。它们只需要有一个相等或更早的版本即可。

更改GCC编译器、binutils和C库的版本。

选择许多的toolchain选项(只有uClibc):是否工具链应该有大文件支持(即在32位系统上支持超过2G的文件),IPv6支持,RPC支持(主要是为了NFS),wide-char支持,locale支持(为了国际

化),C++支持或者线程支持。>>>>>>>>>如果需要,您可以通过运行make uclibc-menuconfig来进一步细化uClibc配置。请注意,然而Buildroot里的所有包都是在绑定在Buildroot中的默认的uClibc配置下测试的:如果你通过删除功能uClibc的一些特征导致偏离这个配置,一些包可能不再构建。

值得注意的是,无论什么时候,只要这些选项中的一个被修改了,那么整个工具链和系统必须被重新构建。

该后端的优点: 与Buildroot很好的集成 快速,只有构建必要的部分 该后端的缺点:

当执行make clean后,需要重新构建工具链,而这很花事件。如果你想减少构建时间,,那就考虑使用外部工具链后端吧。

3.1.1.2 外部工具链后端

外部工具链后端允许使用已经存在的预构建交叉编译工具链。Buildroot知道很多知名的交叉编译工具链,而且能够自动下载它们,或者它能够被指向一个定制的工具链,或者可以下载到的,或者在本地安装的。

然后,你有三种方案来使用一个外部工具链:

使用一个预定义的外部工具链配置,让Buildroot下载、提取和安装工具链。Buildroot已经知道一些知名的工具链。只要在Toolchain中可用的选项中选择工具链配置就可以了。这绝对是最简单的方案。

使用一个预定义的外部工具链配置,但是不是让Buildroot下载和提取工具链,你可以告诉Buildroot你已经安装在您的系统上的工具链的位置。只要在Toolchain中可用的选项中选择工具链配置就可以了,并且取消Download toolchain automatically,并把你的交叉编译工具链的路径填充到Toolchain path文本词条。

使用一个完全定制的外部工具链。这对于使用crosstool-NG或Buildroot本身生成的工具链,特别有用。要做到这一点,请在Toolchain列表中选择Custom toolchain方案。你需要填充Toolchain path,Toolchain prefix和External toolchain C library选项。然后,您必须告诉Buildroot你的外部工具链支持什么。如果你的外部工具链使用glibc库,你只需要告诉Buildroot你的工具链是否支持C++与是否有内建的RPC支持。如果你的外部工具链使用uClibc库,那么你必须告诉Buildroot,它是否支持largefile,IPv6,RPC,wide-char,locale,program invocation,threads和c++。在开始执行的时候,如果选中的选项不匹配工具链配置,Buildroot会告诉你。

我们的外部工具链支持已经使用来自CodeSourcery和Linaro的工具链,crosstool-NG生成的工具链,和Buildroot自身产生的工具链进行了测试。通常,所有支持sysroot特征的工具链都应该可以正常工作。如果不能,那请毫不犹豫地联系它们的开发者。

我们不支持OpenEmbedded或者Yocto生成的工具链或者SDK,因为这些工具链并不纯粹是工具链(即只有编译器,binutils,C和C++库)。这些工具链参杂着大量的预编译库和程序。因此Buildroot不能导入工具链的sysroot,>>>>>>>>>。

我们也不支持使用发行版的工具链(即你的发行版所安装的gcc/binutils/C库)作为给目标系统构建软件的工具链。>>>>>>>因此即使你是要构建一个x86或者x86_64的目标系统,你也不得不使用