在開(kāi)源模塊的基礎(chǔ)上修改代碼,更多的時(shí)候是通過(guò)打補(bǔ)丁的方式進(jìn)行修改。
1.內(nèi)核patch生成
1.1 編譯內(nèi)核模塊命令
vim 19.07/target/linux/Makefile
prereq clean download prepare compile install menuconfig nconfig oldconfig update refresh: FORCE
@+$(NO_TRACE_MAKE) -C $(BOARD) $@
清空內(nèi)核:
make target/linux/clean V=s
解壓內(nèi)核:
make target/linux/prepare V=s
編譯,拷貝內(nèi)核頭文件到工具鏈/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下面的頭文件都會(huì)被拷貝到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
新建兩個(gè)目錄,原始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
拷貝到對(duì)應(yīng)的target/linux下
19.07/target/linux/mediatek/patches-4.19/
之后編譯的時(shí)候,會(huì)根據(jù)前綴的數(shù)值大小一個(gè)一個(gè)打補(bǔ)丁到源碼下面。
2.應(yīng)用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
新建兩個(gè)目錄,原始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
將生成出來(lái)的1001-add-xxx-support.patch拷貝到patches即可。