我正在使用 tar 图像“buildroot-2018.02.tar.gz”为我的嵌入式系统生成 linux 映像(内核和文件系统)。为了确保我需要重新创建项目的最低配置(稍后,在另一台计算机上......),我工作从 BR 树中定义如下BR UM §8.5。
我已经成功地正确配置了 BR 和 Linux 内核,并且创建了两个配置文件: - myProc_defconfig - myProc_linux_defconfig
我正在尝试为我的同事创建一个图像,以便轻松地重新创建该项目。现在,我有以下树:
/ : Git root
/README : This very file
/make_buildroot_env.sh : Script to set up the development environment
/myProc_kernel/ : Development environment prerequisite
/myProc_kernel/configs/ : Contains both BR & Linux configuration files
/myProc_kernel/fs_overlay/ : Filesystem overlay, contains all applicative files
/myProc_kernel/tools/ : Scripts and data used by BR
/myProc_kernel/tools/data : All data files used by scripts
这个想法是创建一个脚本,它将在不同的文件夹中解压 buildroot(系统是根据 中定义的树构建的)并使用 defconfig 文件对其进行配置。
脚本开始如下,从上面定义的“Git root /”启动:
make_buildroot_env.sh
tar -xaf ./MyProc_kernel/tools/data/buildroot-2018.02.tar.gz
cd buildroot-2018.02
make defconfig BR2_DEFCONFIG=../myProc_kernel/configs/myProc_defconfig
make O=../MyProc_kernel
我这里有两个问题:
- 我在上次调用时遇到错误:
Makefile:862: *** 请先配置Buildroot(例如“make menuconfig”)。停止。
- 如果我查看
.config
BR 文件夹中创建的文件,它似乎只采用了很少的参数MyProc_defconfig
我的问题是:
为什么 BR 总是抱怨错误 1 ?应使用指向 defconfig 文件的行进行配置?
我在重新创建开发环境时缺少什么?
答案1
正如您已经发现的那样,您必须合并这两行
make defconfig BR2_DEFCONFIG=../myProc_kernel/configs/myProc_defconfig
make O=../MyProc_kernel
进入
make defconfig BR2_DEFCONFIG=../myProc_kernel/configs/myProc_defconfig O=../MyProc_kernel
为了回答附加的“为什么”问题,“O=”为 make 命令创建一个包装器,以使用 buildroot 安装的主目录来存储软件包,并使用新创建的目录来存储配置文件、构建和输出。
包装器需要就位,以便可以使用它来创建 defconfig。或者,您可以交换这两行以首先创建包装器,然后使用它来创建配置。
检查 8.5构建根目录手册
为了便于使用,Buildroot 在输出目录中生成一个 Makefile 包装器 - 因此第一次运行后,您不再需要传递 O=<...> 和 -C <...>,
答案2
好吧,我找到了如何做它想做的事。这两行必须合并:
make defconfig BR2_DEFCONFIG=../myProc_kernel/configs/myProc_defconfig
make O=../MyProc_kernel
分成一行:
make defconfig BR2_DEFCONFIG=../myProc_kernel/configs/myProc_defconfig O=../MyProc_kernel
然后所有内容都被编译到/MyProc/
文件夹中,并且该文件夹中什么都不做buildroot-2018.02
。