路由联盟

16-Openwrt patch生成

2022-01-21  本文已影响0人  Creator_Ly

在开源模块的基础上修改代码,更多的时候是通过打补丁的方式进行修改。

1.内核patch生成

1.1 编译内核模块命令

vim 19.07/target/linux/Makefile

prereq clean download prepare compile install menuconfig nconfig oldconfig update refresh: FORCE
    @+$(NO_TRACE_MAKE) -C $(BOARD) $@

清空内核:

make target/linux/clean V=s

解压内核:

make target/linux/prepare V=s

编译,拷贝内核头文件到工具链/19.07/staging_dir/toolchain-aarch64_cortex-a53_gcc-8.3.0_musl/include/linux$

make target/linux/install V=99

放在/19.07/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/linux-4.19.81/include/uapi下面的头文件都会被拷贝到19.07/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/linux-4.19.81/user_headers下面,最后拷贝到/19.07/staging_dir/toolchain-aarch64_cortex-a53_gcc-8.3.0_musl/include/linux$

1.2 生成patch

新建两个目录,原始linux-4.19.81.org/和修改后的linux-4.19.81/

使用如下命令生成patch

diff -Naur linux-4.19.81.org/ linux-4.19.81/ > 3001-add-xxx-support.patch

拷贝到对应的target/linux下

19.07/target/linux/mediatek/patches-4.19/

之后编译的时候,会根据前缀的数值大小一个一个打补丁到源码下面。

2.应用package生成

2.1 编译package模块命令

vim 14.07/package/Makefile文件里有如下定义:

$(eval $(call stampfile,$(curdir),package,prereq,.config))
$(eval $(call stampfile,$(curdir),package,cleanup,$(TMP_DIR)/.build))
$(eval $(call stampfile,$(curdir),package,compile,$(TMP_DIR)/.build))
$(eval $(call stampfile,$(curdir),package,install,$(TMP_DIR)/.build)

清空:

make package/network/services/uhttpd/clean V=99

解压,打patch

make package/network/services/uhttpd/prepare V=99

编译:

make package/network/services/uhttpd/compile V=99

安装,拷贝

make package/network/services/uhttpd/install V=99
2.2 生成patch

新建两个目录,原始uhttpd-2019-08-17-6b03f960.org/和修改后的uhttpd-2019-08-17-6b03f960.81/

使用如下命令生成patch

diff -Naur uhttpd-2019-08-17-6b03f960.org/ uhttpd-2019-08-17-6b03f960/ > 1001-add-xxx-support.patch

在package下面新建patches目录

19.07$ ls package/network/services/uhttpd/
files  Makefile  patches

将生成出来的1001-add-xxx-support.patch拷贝到patches即可。

上一篇下一篇

猜你喜欢

热点阅读