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