Linux下產生patch和打patch

來源:互聯網
上載者:User
通過diff工具產生補丁, patch工具打上補丁.

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

1.為單個檔案產生補丁

$ diff -up linux-2.6.28.8/net/sunrpc/svc.orig.c linux-2.6.28.8/net/sunrpc/svc.c

這條命令會產生類似如下的輸出, 你將它重新導向到一個檔案中, 這個檔案就是patch.

diff -up linux-2.6.28.8/net/sunrpc/svc.orig.c 2009-03-17 08:50:04.000000000 +0800
+++ linux-2.6.28.8/net/sunrpc/svc.c 2009-03-30 19:18:41.859375000 +0800
@@ -1050,11 +1050,11 @@ svc_process( struct svc_rqst *rqstp)參數詳解:-u 顯示有差異行的前後幾行(上下文), 預設是前後各3行, 這樣, patch中帶有更多的資訊.-p 顯示代碼所在的c函數的資訊.2.為多個檔案產生補丁$ diff -uprN linux-2.6.28.8.orig/net/sunrpc/ linux-2.6.28.8/net/sunrpc/

這條命令對比了linux-2.6.28.8.orig/net/sunrpc/和linux-2.6.28.8/net/sunrpc/兩個目錄下的所有源碼差異.

參數詳解:-r 遞迴地對比一個目錄和它的所有子目錄(即整個分類樹).-N 如果某個檔案缺少了, 就當作是空檔案來對比. 如果不使用本選項, 當diff發現舊代碼或者新代碼缺少檔案時, 只簡單的提示缺少檔案. 如果使用本選項, 會將新添加的檔案全新列印出來作為新增的部分.3.打補丁產生的補丁中, 路徑資訊包含了你的Linux源碼根目錄的名稱, 但其他人的源碼根目錄可能是其它名字, 所以, 打補丁時, 要進入你的Linux源碼根目錄, 並且告訴patch工具, 請忽略補丁中的路徑的第一級目錄(參數-p1).$ patch -p1 < patch1.diff

diff命令必須在整個Linux源碼的根目錄的上一級目錄中執行.4. 樣本給修改過的核心產生patch,然後用產生的patch給未修改過的核心打補丁其中,目錄linux-2.6.31.3為未修改過的核心,目錄linux-2.6.31.3_1為修改過的核心$ diff -uparN linux-2.6.31.3 linux-2.6.31.3_1/ > mypatch
$ cd linux-2.6.31.3
$ patch -p1 < mypatch

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.