- 嵌入式Linux系统开发:基于Yocto Project
- (美)鲁道夫·J.斯特雷夫
- 1467字
- 2023-07-19 10:53:19
2.1.4 配置构建环境
Poky提供了脚本oe-init-build-env来创建新的构建环境。这个脚本设置构建环境的目录结构和初始化核心集合的配置文件。它也设置一系列构建系统所需要的shell变量。你不直接执行oe-init-build-env脚本而是使用source命令来把shell变量设置输出到当前的shell:
执行这个命令在当前目录中以由参数<builddir>提供的名字创建新的构建环境。你可以省略这个参数,那么脚本会使用默认的build作为名字。在设置了构建环境后,脚本改变目录到构建目录。
使用程序清单2-6所示形式的脚本来创建新的构建环境并且初始化先前创建的现有的构建环境。在创建新的构建环境时,脚本提供给你一些指示。
程序清单2-6 新构建环境设置
在新创建的构建环境里面,该脚本增加了目录conf并且把两个配置文件放在里面:bblayers.conf和local.conf。我们会在第3章中详细解释bblayers.conf。现在仅仅看看local.conf,它是构建环境的主要配置文件。
在local.conf中,设置各个变量以影响BitBake构建自定义的Linux操作系统栈。你可以修改设置并且可以向文件中加入新的设置以覆盖在其他配置文件中做出的设置。通过贯穿本书的各个例子,我们会解释这种集成以及如何使用它。对于我们的第一个构建来说,我们聚焦在少量设置上,剩余的设置采用默认值。如果在文本编辑器中打开local.conf文件,那么你将发现在程序清单2-7中显示的设置(在众多里面,它包括从这个程序清单里面清除的注释行)。
程序清单2-7 conf/local.conf
以井字符(#)开头的行是注释。如果有变量设置的行的行首有井字符,那么需要去除井字符以使得设置生效。显示的值是默认值。BitBake使用这些值,即使你没有明确启用它们。在程序清单2-7中显示的变量配置是在创建了新的构建环境以后通常希望改变的变量配置。它们描述在表2-1中。
表2-1 配置变量
两个并发选项BB_NUMBER_THREADS和PARALLEL_MAKE的默认值是以使用所有可用核心的系统中的CPU核心数量为基础自动计算出来的。你可以通过将这些值设置得比你系统中的核心数量少来限制负载。使用比物理核心数更大的值是可能的,但是不加速构建过程。BitBake和Make对应地派生更多线程,但是它们仅仅在CPU核心可用的情况下运行。永远不要忘记变量设置前后的引号。也要注意到,对于PARALLEL_MAKE,应该包含-j,例如“-j 4”,因为这个值会被一字不差地传递到make命令。
设置MACHINE选择BitBake构建Linux操作系统栈所针对的目标机器类型。Poky提供了一系列针对QEMU和一些实际硬件板目标机器的标准机器。板支持包可以提供额外的目标机器。对于我们的第一个构建来说,选择qemux86——带有x86 CPU的模拟的目标机器。
变量DL_DIR告诉BitBake把源下载放在什么地方。默认的设置把文件放在构建环境顶级目录下的downloads目录中。TOPDIR变量包含到构建环境的完整(绝对)路径。源下载可以在多个构建环境之间共享。如果BitBake检测到源下载在下载目录中已经是可用的了,那么BitBake不会再次下载它。因此,推荐你设置DL_DIR变量来指向到构建环境之外的目录路径。当不再需要特定的构建环境时,可以简单地删除它而不会删除所有的源文件下载。
对于SSTATE_DIR也是这样的,它包含到共享状态缓存的路径。OpenEmbedded在处理构建了组成Linux操作系统栈的包所必需的很多任务中产生大量中间输出。和源下载类似,中间输出对将来的构建来说是可以重用的并且在多个构建环境之间共享以加速构建过程。默认情况下,配置把共享状态缓存目录放在构建环境顶级目录下面。建议你把这个设置改成构建环境之外的路径。
变量TMP_DIR包含到BitBake执行所有构建工作和存储构建输出的目录的路径。因为在这个目录下存储的输出是非常特定于构建环境的,所以保留它作为到构建环境的子目录是有意义的。在该目录下存储的数据量可能会最终占用很多GB的硬盘空间,因为它包含解压出来的源下载、交叉编译工具链、编译输出和针对目标机器的内核镜像以及根文件系统。
为了在构建中保留磁盘空间,可以增加
它命令BitBake在构建完包之后删除针对构建包的工作目录。