应用差异补丁

Jui*_*icy 3 diff patch

我从来没有在 Linux 中打过任何补丁,我无法完全弄清楚写这篇文章(第二段)的人是什么意思。该目标源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__)
Run Code Online (Sandbox Code Playgroud)

diff对我来说似乎是一个很长的命令,但尝试执行它失败了。经过一番搜索,我虽然必须将其保存为 ieqemu.patch并使用 运行它patch,但是在尝试了一些失败的组合之后。

在这种情况下,我应该如何处理上面的代码片段?

mat*_*tdm 8

这实际上是一个非常短的diff 命令。它说要删除该行//#define DEBUG并将其替换为#define DEBUG.

在这种 diff 格式中,以单个开头的行将-被删除并+添加那些。其他行用于上下文,并@@告诉文件中的偏移量和引用的行数。(+++ ---三行告诉您修改了哪个文件。)

补丁无法应用的两个常见原因是:

  1. 实际受影响的线路已更改,或
  2. 这些行周围的上下文已经改变(可能改变太多,因为补丁通常使用“模糊”算法。

在这种情况下,可能最容易手动查看代码部分(在linux-user/flatload.c文件中,正如您从第一行看到的那样),看看是否有#define DEBUG任何地方被注释掉,然后删除//注释字符。

我自己查看代码,我发现问题实际上可能是原因#3——补丁被破坏了,因为它以不应该的方式呈现。看到刚才说的那一行了#include吗?在原始来源中,它说#include <target_flat.h>。你发现补丁的博客软件可能认为这<target_flat.h>是一个可疑的HTML标签并默默删除了它,而作者没有注意到。