Linux下Patch製作(打補丁)

2021-08-09 16:32:51 字數 943 閱讀 5004

在linux下我們可以使用製作patch的方式給**打補丁,用於修復bug、漏洞等問題。其本質就是通過diff命令比較修改前後的**差異,將結果另存為乙個patch檔案,即補丁檔案。其他人通過patch命令將發布的patch檔案中的內容同步到自己的**中,即可完成**的公升級。

1、新建乙個demo/demo1/demo2/此目錄包含a.c檔案,內容如下:

#include int

main(void)

2、拷貝這個目錄,命名為demo_new

3、將demo_new中的a.c檔案改為如下內容:

#include int

main(void)

4、使用diff比較兩個檔案,結果重定向到demo.patch中

@diff -naur  demo/   demo_new/   >  demo.patch

-naur是固定引數,每次都這麼用就行了

5、使用patch命令打補丁

@patch -p0 < demo.patch

再開啟demo下的檔案可以看到**已經被更新了;

6、路徑引數說明

patch命令後跟的引數-p0表示當前目錄級數,目前是0,還可以是1、2、3......

這個計數是什麼意思呢?讓我們開啟demo.patch檔案檢視第一行:

從patch檔案中可以看到當前更新目錄為demo/demo1/demo2/a.c,引數-p0表示執行patch命令是所在的位置是demo目錄的上級目錄。如果這裡填-p1就表示此時處於demo目錄中,以此類推。因此在使用diff命令製作patch時一定不要使用絕對路徑,否則在打patch時就需要從根目錄開始數當前處於哪一級了。

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...