《2022年buildroot用户指南 .pdf》由会员分享,可在线阅读,更多相关《2022年buildroot用户指南 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、buildroot 用户指南名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 目录名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 第三章 使用 Buildroot 来工作3.1.1交叉编译工具链编译工具链一套工具的集合, 允许您为您的系统编译代码。它由一个编译器(在
2、我们的例子中,gcc),二进制组件例如汇编器和链接器( 在我们的例子中,binutils)和 C标准库 ( 例如 GNU Libc、uClibc)。安装在您的开发站上的系统必定已经有了一套编译工具链,您可以使用它来编译应用程序在您的系统上运行。如果你使用电脑, 你的编译工具链运行在x86 处理器上,那么生成代码是运行在x86 处理器上的。在大多数Linux 系统 , 编译工具链使用GNU libc(glibc)作为标准库。这种编译工具链被称为“主机编译工具链”。这台x86 电脑就被称为“主机系统”。 编译工具链是您的发行版所提供的,这与Buildroot无关(除了用它来建立一个交叉编译工具链和
3、运行在开发主机上的其他工具)。Buildroot为交叉编译工具链提供了两种解决方案:内部工具链后端,它在配置界面中被称为Buildroot toolchain。外部工具链后端,它在配置界面中被称为External toolchain。这两个方案的选择是由Toolchain菜单中的Toolchain Type来决定的。一旦一个方案被选择,那么与之相关的许多配置选项就会出现,它们在下面几节作详细讨论。3.1.1.1 内部工具链后端内部工具链后端是一个后端,在这个后端里,Buildroot会在为你的目标嵌入式系统编译用户空间的应用和库之前,靠自己来构建一个交叉编译工具链。这个后端支持几种C库: uC
4、libc ,glibc,eglibc。一旦你选择了这个后端,那么与之相关的许多配置选项就会出现。最重要的一些允许您:更改被用来构建工具链的Linux 内核头文件的版本。被用于构建你的工具链的Linux 内核头文件的版本并不需要与你打算运行在你的嵌入式系统上的Linux 内核版本完全匹配。它们只需要有一个相等或更早的版本即可。更改 GCC 编译器、 binutils和 C库的版本。选择许多的toolchain选项(只有uClibc ):是否工具链应该有大文件支持(即在32 位系统上支持超过 2G的文件), IPv6 支持, RPC支持(主要是为了NFS ), wide-char支持, local
5、e支持(为了国际名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 化), C+ 支持或者线程支持。如果需要,您可以通过运行make uclibc-menuconfig来进一步细化 uClibc配置。请注意,然而Buildroot里的所有包都是在绑定在Buildroot中的默认的uClibc配置下测试的:如果你通过删除功能uClibc的一些特征导致偏离这个配置,一些包可能不再构建。值得注意的是,无论什么时候,只要这些选项中的一个被修
6、改了,那么整个工具链和系统必须被重新构建。该后端的优点:与 Buildroot很好的集成快速,只有构建必要的部分该后端的缺点:当执行 make clean后,需要重新构建工具链,而这很花事件。如果你想减少构建时间, ,那就考虑使用外部工具链后端吧。3.1.1.2 外部工具链后端外部工具链后端允许使用已经存在的预构建交叉编译工具链。Buildroot知道很多知名的交叉编译工具链,而且能够自动下载它们,或者它能够被指向一个定制的工具链,或者可以下载到的,或者在本地安装的。然后,你有三种方案来使用一个外部工具链:使用一个预定义的外部工具链配置,让Buildroot下载、提取和安装工具链。Buildr
7、oot已经知道一些知名的工具链。只要在Toolchain中可用的选项中选择工具链配置就可以了。这绝对是最简单的方案。使用一个预定义的外部工具链配置,但是不是让Buildroot下载和提取工具链,你可以告诉Buildroot你已经安装在您的系统上的工具链的位置。只要在Toolchain中可用的选项中选择工具链配置就可以了,并且取消Download toolchain automatically,并把你的交叉编译工具链的路径填充到Toolchain path文本词条。使用一个完全定制的外部工具链。这对于使用crosstool-NG或 Buildroot本身生成的工具链,特别有用。要做到这一点,请在
8、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
9、+。在开始执行的时候,如果选中的选项不匹配工具链配置,Buildroot会告诉你。我们的外部工具链支持已经使用来自CodeSourcery 和 Linaro的工具链, crosstool-NG生成的工具链,和 Buildroot自身产生的工具链进行了测试。通常,所有支持sysroot特征的工具链都应该可以正常工作。如果不能,那请毫不犹豫地联系它们的开发者。我们不支持OpenEmbedded 或者 Yocto 生成的工具链或者SDK ,因为这些工具链并不纯粹是工具链(即只有编译器,binutils,C和 C+ 库)。这些工具链参杂着大量的预编译库和程序。因此Buildroot不能导入工具链的sy
10、sroot ,。我们也不支持使用发行版的工具链(即你的发行版所安装的gcc/binutils/C库)作为给目标系统构建软件的工具链。因此即使你是要构建一个x86 或者 x86_64 的目标系统,你也不得不使用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - Buildroot或者 crosstool-NG来生成一个交叉编译工具链。如果你想要给你的项目生成一个定制的工具链,并且这个工具链在Buildroot中可以被用作一个外部工具链
11、,我们的推荐是最好使用croostool-NG来构建它。我们推荐构建工具链和Buildroot分开,然后使用外部工具链后端来导入它。这个后端的优点是:允许您使用知名的或者经过测试的交叉编译工具链。避免了交叉编译工具链的构建时间,而这通常占整个嵌入式Linux 系统构建时间的很大一部分。没有只能使用uClibc的限制: glibc和 eglibc工具链也是支持的。这个后端的缺点:如果你的预构建的外部工具链有一个bug,而且可能很难得到厂商的修复,那么你得自己使用croostool-NG构建你的外部工具链。3.1.2 /dev管理在一个 Linux 系统上, /dev 目录包含一些特殊的文件,这些
12、文件允许用户空间的应用访问Linux 内核所管理的硬件设备。如果没有这些device files,你的用户空间的应用将不能使用这些硬件设备,即使它们被内核正确地识别了。在 System configuration,/dev management 下面, Buildroot提供了四种不同的方案来处理/dev 目录:第一个方案是Static using device table。这是一个在Linux 中处理设备文件的古老而经典的方案。使用这种方案,设备文件会被永久地保存在根文件系统(即重启后还存在)。在硬件设备被从Linux系统上添加或移除的时候,这些设备文件也不会被自动地创建和删除。Buildr
13、oot因此使用device table创建了一个标准的设备集合,它默认被存储在Buildroot源代码的 system/device_table_dev.txt中。这个在Buildroot生成最终的跟文件系统镜像的时候会被处理,所以device files在output/target目录中不可见。BR2_ROOTFS_STATIC_DEVICE_TABLE选项允许更改被Buildroot使用的默认的设备表,或者添加一个额外的设备表,因此这个额外的device files在构建过程中会被Buildroot创建。因此,如果你使用这个方法,而且一个device file在你的系统中消失了,例如你可以
14、创建一个board/device_table_dev.txt文件,这份文件中包含了你的添加的device files的描述,然后你可以设置BR2_ROOTFS_STATIC_DEVICE_TABLE到system/device_table_dev.txt board/device_table_dev.txt。第二个方案是名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -