生成 .patch 文件

diff -Naur a/ b/ > xxx.patch

使用 .patch 文件打补丁

patch -p1 < xxx.patch # -p1 表示忽略补丁文件内路径的第一个文件夹,-p0 则表示直接使用补丁文件内完整路径查找文件

撤销打过的补丁

patch -p1 -R < xxx.patch

buildroot 支持的3种常规打补丁方式及其顺序

推荐的常规打补丁方式 - package需要编译时下载

使用第三种方式,把补丁放在 buildroot 之外的路径,路径通过 buildroot 的 make menuconfig 赋值到变量 BR2_GLOBAL_PATCH_DIR

以下是对 strace 打补丁,采用方式2和方式3

推荐的常规打补丁方式 - package 在本地,buildroot 外部 package

在 .mk 文件中添加

define SWT6652X_PRE_BUILD_CMDS

$(APPLY_PATCHES) $(@D) $(@D)/ \000*.patch

endef

SWT6652X_PRE_BUILD_HOOKS += SWT6652X_PRE_BUILD_CMDS

通过执行脚本打补丁 - 非常规

buildroot 提供了一个打补丁的脚本,在 $BUILDROOT_DIR/support/scripts/apply-patches.sh,使用举例:

BUILDROOT_REMO_TOPDIR=/home/chenjinhe/Desktop/newVolume/RK3308/remo

# $BUILDROOT_DIR/support/scripts/apply-patches.sh $BUILDROOT_DIR $BUILDROOT_REMO_TOPDIR/utils/buildroot_patchs \*.patch; buildroot根目录 patch存放目录 patch文件

这种方法可以实现 package 下载前对其打补丁,比如由于某些原因不能直接更换某个package的版本,可以打补丁更换为其他版本,再下载编译