私はLinuxで何もパッチを当てたことがなく、その人が何を書いたのか正確にはわかりません。この投稿(2番目の段落)は、次のことを意味します。ターゲットソースqemu
はgithubから来ており、適用する変更は次のとおりです。
diff --git a/linux-user/flatload.c b/linux-user/flatload.c
index 58f679e..c13a201 100644
--- a/linux-user/flatload.c
+++ b/linux-user/flatload.c
@@ -44,7 +44,7 @@
#define ntohl(x) be32_to_cpu(x)
#include
-//#define DEBUG
+#define DEBUG
#ifdef DEBUG
#define DBG_FLT(...) printf(__VA_ARGS__)
これは私に長いdiff
コマンドのように見えますが、実行しようとすると失敗します。検索を行った後はieとして保存してqemu.patch
実行する必要がありましたが、patch
いくつかの組み合わせを試した後も失敗しました。
この場合、上記のコードスニペットでどうすればよいですか?
答え1
これは実際に非常に短い違いコマンド。その行を削除して//#define DEBUG
ください#define DEBUG
。
この diff 形式では、Single で始まる行が-
削除され、+
Single で始まる行が追加されます。他の行はコンテキスト用であり、@@
ファイルへのオフセットと参照された行数を示します。 (3行は+++
---
どのファイルが変更されたかを示します。)
パッチ適用が失敗する2つの一般的な理由は次のとおりです。
- 実際の影響を受ける行が変更されたか、
- この行の周りのコンテキストが変更されました(おそらく多すぎる変化、パッチは通常「ぼかし」アルゴリズムを使用するためです。
この場合、最も簡単な方法は、コードセクション(ファイルの最初の行に示すlinux-user/flatload.c
ように)を手動で見て、コメントアウトされた項目があることを確認してから#define DEBUG
コメント//
文字を削除することです。
コードを直接見てみると、問題が実際に原因#3である可能性があることがわかりました。パッチがレンダリングされないようにレンダリングされたため、パッチが破損しています。私が言ったことを見ましたか#include
?内部にソースソース、それは言う#include <target_flat.h>
。パッチを発見したブログソフトウェアは、それが<target_flat.h>
疑わしいHTMLタグであると考え、作者が気づかないように静かに削除した可能性があります。
答え2
git
パッチは特にを使用して作成されたようです。git diff
コマンド。したがって、gitツールを使用する方が良いでしょう(具体的にgit apply
)ターゲットファイルにパッチを適用するには:
git apply qemu.patch