如何修改Buildroot包源进行包开发?

How to modify the source of Buildroot packages for package development?

我一直在使用 buildroot 以便使用 uclibc 构建工具链。现在,buildroot 下载所有包,解压并构建它们..

我想更改工具链的 uclibc 源代码,然后用新源代码重新编译工具链,我只是不明白如何以漂亮的方式完成它。

构建完成后,所有提取的源都在“/output/build”中找到。但是更改它们不会给我带来任何影响,因为 buildroot 在构建期间仅将此目录用作中间目录。

所以我的想法是,也许可以更改 uclibc 包中的 .mk 文件并使其使用我修改后的源代码,而不是下载并解压缩它(尚不确定是否可以在那里完成)但这似乎有点丑陋的解决方案..

所以我的问题是:有没有更好的方法告诉 buildroot 使用现有源构建包?

请阅读 the Buildroot manual 关于 <pkg>_OVERRIDE_SRCDIR 功能的信息。它完全符合您的要求。

最小 git 子模块 + *_OVERRIDE_SRCDIR 示例

文档对此进行了解释,但这里有一个解析速度更快的版本。

目录结构:

  • buildroot/: git 带有 buildroot 的子模块 2017.02

  • linux/: git 带有 Linux 内核的子模块指向你在 https://github.com/you/linux

  • 的分支
  • buildroot_override:包含:

    LINUX_OVERRIDE_SRCDIR = ../linux
    

构建并运行:

cd buildroot
make qemu_x86_64_defconfig
echo 'BR2_PACKAGE_OVERRIDE_FILE=../buildroot_override' >> .config
make
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -net user

这里是an example project using it.