linux學習之patch 打補丁

2021-09-12 11:25:32 字數 1615 閱讀 7355

1.patch用法

patch -p[剝離層級]  

2.patch命令示例

cd u-boot-1.1.6/             //進入原檔案目錄      

patch -p1 <..>

//「p」 表示去掉補丁檔案裡路徑的第幾部分。"1",表示去掉第1個

//「// 「../」 表示返回上乙個目錄,因為這補丁檔案和原檔案在同一目錄下

為什麼需要輸入-p1?如下圖所示,可以看到補丁檔案裡,每個需要改的檔案,都有u-boot-1.1.6目錄,而我們之前已經cd進入了,所以需要輸入-p1,去掉它

3.patc**件內容補充

diff -urn u-boot-1.1.6/common/cmd_bootm.c u-boot-1.1.6_jz2440/common/cmd_bootm.c  //綠色代表原檔名以及檔案位址,紅色代表打上補丁後的新檔名以及位址

--- u-boot-1.1.6/common/cmd_bootm.c 2006-11-02 22:15:01.000000000 +0800

+++ u-boot-1.1.6_jz2440/common/cmd_bootm.c 2010-11-26 12:54:38.150155640 +0800

//--- 對檔案裡**刪減 +++ 對檔案裡**新增

@@ -318,5 +318,5 @@ //-318,5 表示在原檔案裡第318行內有刪減,接下來顯示5段。+318,5同樣類似

//第318行,第一段

switch (hdr->ih_comp) { //第319行,第二段

case ih_comp_none: //第320行,第三段

- if(ntohl(hdr->ih_load) == addr) { //第321行,刪減第四段

+ if(ntohl(hdr->ih_load) == data) { //第322行,增加第五段

4.diff常用引數5.diff命令示例

diff -urn   u-boot-2012.04.01   u-boot-2012.04.01_new > u-boot-2012.04.01_new.patch

原檔案修改後的新檔案

當乙個檔案有多個補丁需要打,則使用for迴圈批處理命令比如,在tmp/目錄下打上../patches/目錄下的所有補丁檔案:

cd tmp/

for file in ../patches/*.patch; do patch -p1 < $file; done

Linux下生成patch和打patch

通過diff工具生成補丁,patch工具打上補丁.在使用diff之前,你需要保留乙份未修改過的原始碼,然後在其它地方修改原始碼的乙份拷貝.diff對比這兩份原始碼生成patch.修改過的原始碼必須保留原來的檔名,例如,如果你修改原始碼中的a.c檔案,那麼,修改後的檔案還是名為a.c,在修改之前你可以...

Linux下生成patch和打patch

在使用diff之前,你需要保留乙份未修改過的原始碼,然後在其它地方修改原始碼的乙份拷貝.diff對比這兩份原始碼生成patch.修改過的原始碼必須保留原來的檔名,例如,如果你修改原始碼中的a.c檔案,那麼,修改後的檔案還是名為a.c,在修改之前你可以複製a.c為a.orig.c進行備份.1 diff...

Linux下生成patch和打patch

在使用diff之前,你需要保留乙份未修改過的原始碼,然後在其它地方修改原始碼的乙份拷貝.diff對比這兩份原始碼生成patch.修改過的原始碼必須保留原來的檔名,例如,如果你修改原始碼中的a.c檔案,那麼,修改後的檔案還是名為a.c,在修改之前你可以複製a.c為a.orig.c進行備份.diff u...