我正在开发一个嵌入式系统,使用buildroot作为构建内核和根文件系统的工具。我想对这个内核源码树应用一些补丁,有人可以告诉我buildroot如何应用补丁吗?
我正在开发一个嵌入式系统,使用buildroot作为构建内核和根文件系统的工具。我想对这个内核源码树应用一些补丁,有人可以告诉我buildroot如何应用补丁吗?
补充@pradeepchhentri的答案。Quilt将查找位于*.mk文件相同文件夹中的文件。构造适当的文件:
将源包与原始包进行差异对比,并将其写入名为
packagename-number-description.patch 的文件中。
其中
packagename - 必须与软件包名称相同
number - 如果要应用多个补丁,则是应用补丁的顺序(否则将按字母顺序应用)
description - 可以是任意自由文本
将此文件放置在与[packagename].mk文件和package / Config.in文件相同级别的软件包中。
不要忘记清除生成的文件,或者如果这样做,请进行[package]-rebuild操作。如果正确执行,应该会看到"Patching..."消息。
使用*_OVERRIDE_SRCDIR
并在子模块中跟踪所有内容
与其使用补丁,我强烈建议您采用以下方法:
myproject/
.git/
submodules/buildroot/
submodules/source_of_my_package/
只需在子模块中跟踪指向您的补丁项目的分支,即可跟踪源代码。
这将使所有内容更加清晰易懂,并且易于跟踪。
更多信息请查看:如何修改Buildroot软件包的源代码以进行软件包开发?
BR2_GLOBAL_PATCH_DIR
外部补丁
目录结构:
.git/
buildroot/
Buildroot 子模块见https://dev59.com/63vZa4cB1Zd3GeqP-hPL#23635403global_patch_dir/packagename/0001-my-test.patch
添加到配置中:
BR2_GLOBAL_PATCH_DIR=../global_patch_dir
然后使用以下命令构建:
cd buildroot
make
output/build/packagename-1.0.0/
目录中。关于buildroot项目中的补丁文件的一些细节:
you have to
diff -u "old_file" "new_file" > file.patch
当站在包含你的tar.gz软件包的位置上时,执行以下操作:
PACKAGE_NAME_SOURCE
0001-configure.ac-convert-AC_TRY_COMPILE-AC_COMPILE_IFELS.patch
不需要修改配置文件,所有的补丁都会自动尝试应用。