我从来没有在 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
,但是在尝试了一些失败的组合之后。
在这种情况下,我应该如何处理上面的代码片段?
这实际上是一个非常短的diff 命令。它说要删除该行//#define DEBUG
并将其替换为#define DEBUG
.
在这种 diff 格式中,以单个开头的行将-
被删除并+
添加那些。其他行用于上下文,并@@
告诉文件中的偏移量和引用的行数。(+++
---
三行告诉您修改了哪个文件。)
补丁无法应用的两个常见原因是:
在这种情况下,可能最容易手动查看代码部分(在linux-user/flatload.c
文件中,正如您从第一行看到的那样),看看是否有#define DEBUG
任何地方被注释掉,然后删除//
注释字符。
我自己查看代码,我发现问题实际上可能是原因#3——补丁被破坏了,因为它以不应该的方式呈现。看到刚才说的那一行了#include
吗?在原始来源中,它说#include <target_flat.h>
。你发现补丁的博客软件可能认为这<target_flat.h>
是一个可疑的HTML标签并默默删除了它,而作者没有注意到。