buildroot package打patch方法

我们修改了busybox的源码和配置文件,需要通过在buildroot package里面通过打patch的方式,并指定我们的配置文件进行编译;
在这里插入图片描述
1、制作patch方法说明
patch文件也叫补丁,就是一个文本文档,这个文档包含了在两个不同版本的源代码树之间的变化。补丁是通过diff应用程序来创建的。
Diff命令用法:

”-u”:表示在比较结果中输出上下文中一些相同的行,这有利于人工定位
“-r“:表示递归比较各个子目录下的文件
“-N“:将不存在的文件当作空文件
“-w“:忽略对空格的比较
“-B“:忽略对空行的比较
-a或——text:预设只会逐行比较文本文件;

patch生成方法:
将源码压缩包解压出两份后,分别将目录改成a、b,b为修改的部分,然后可以通过命令指定具体修改的文件生成patch文件:

diff -Naur a/xxx.h b/xxx.h > xxx.patch

修改文件较多时,也可以通过指定目录生成patch文件:

diff -Naur a/ b/ > xxx.patch

重定向后就可以生成最后需要的patch文件。将patch拷贝到对应目录即可。

2、让patch文件生效方法
将制作好的patch文件放在对应目录后重新执行make clean清空编译,再make编译,就会自动打好patch:
在这里插入图片描述
补丁被打上的效果:
在这里插入图片描述
3、打patch脚本文件

在package/Makefile.in中执行打patch的脚本support/scripts/apply-patches.sh如下:

APPLY_PATCHES = PATH=$(HOST_DIR)/bin:$$PATH support/scripts/apply-patches.sh $(if $(QUIET),-s)

4、打补丁的列表文件查看方法
在这里插入图片描述
在这里插入图片描述

Buildroot提供了一些通用软件包的宏、变量和规则,用于简化软件包的定义和构建过程。以下是一些常见的通用软件包宏、变量和规则: 1. `$(generic-package)`:通用软件包宏的名称。 2. `$(eval $(call generic-package,...))`:使用通用软件包宏的语法。 3. `$(eval $(generic-package))`:将通用软件包宏的展开结果插入到Makefile中。 4. `$(PKG_NAME)`:软件包的名称。 5. `$(PKG_VERSION)`:软件包的版本号。 6. `$(PKG_SOURCE)`:软件包源代码的URL或路径。 7. `$(PKG_HASH)`:软件包源代码文件的哈希值。 8. `$(PKG_LICENSE)`:软件包的许可证类型。 9. `$(PKG_BUILD_DIR)`:软件包构建目录的路径。 10. `$(PKG_INSTALL_DIR)`:软件包安装目录的路径。 11. `$(PKG_BUILD_DEPENDS)`:软件包构建时依赖的其他软件包列表。 12. `$(PKG_INSTALL_TARGET)`:软件包安装时需要执行的命令。 除了上述变量和规则之外,还有其他一些可用的变量和规则,例如: - `$(PKG_CONFIG_DEPENDS)`:软件包构建时依赖的pkg-config配置文件列表。 - `$(PKG_AUTORECONF)`:指示是否在构建过程中自动运行autoreconf命令。 - `$(PKG_PATCH_DIR)`:软件包的补丁文件所在目录。 - `$(PKG_CONFIGURE_CMDS)`:软件包的配置命令。 - `$(PKG_BUILD_CMDS)`:软件包的构建命令。 - `$(PKG_INSTALL_TARGET_CMDS)`:软件包的安装命令。 这些通用软件包宏、变量和规则可以根据具体的软件包和需求进行适当的修改和定制,以满足特定的构建和安装要求。 您可以在Buildroot的`buildroot/package/generic.mk`文件中找到完整的通用软件包宏定义,并在Buildroot的文档中了解更多关于软件包定义和构建的详细信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值