Nunca he parchado nada en Linux, y no puedo entender exactamente qué significa el tipo que escribió esta publicación (segundo párrafo). Esa fuente de destino es qemu
de github y los cambios para aplicar son:
diff --git a/linux-user/flatload.cb/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__)
Esto parece un command diff
largo para mí, pero al intentar ejecutarlo falla. Después de algunas búsquedas, pensé que tenía que save eso como ie qemu.patch
y ejecutarlo con patch
, pero después de probar algunas combinaciones también fallaron.
En este context, ¿qué se supone que debo hacer con el fragment de arriba?
Este es realmente un command diff muy corto . Dice que eliminar la línea //#define DEBUG
y la reemplaza con #define DEBUG
.
En este formatting de diferencias, se eliminan las líneas que comienzan con una sola y se agregan las que tienen +
. Las otras líneas son para el context, y @@
dice el desplazamiento en el file y la cantidad de líneas a las que se hace reference. (Y las líneas triples +++
---
dicen qué file se modificó).
Las dos razones más comunes para que un parche no se aplique son:
En este caso, probablemente sea más fácil mirar la sección de código a mano (en el file linux-user/flatload.c
, como puede ver en la primera línea), y ver si hay un #define DEBUG
cualquier lugar , y luego eliminar los //
caracteres de comentario.
Si miro el código yo mismo, veo que probablemente el problema sea realmente el motivo # 3: el parche está destrozado porque se ha procesado de una manera que no se suponía que fuera. ¿Ves esa línea que acaba de decir #include
? En la fuente original , dice #include <target_flat.h>
. El software del blog donde encontraste el parche probablemente decidió que <target_flat.h>
es una label HTML sospechosa y la eliminó en silencio, y el autor no se dio count.
Este parche parece haber sido creado usando git
, específicamente el command git diff
. Así que probablemente harías bien en usar las herramientas git ( específicamente git apply
) para git apply
parche al file (s) de destino:
git apply qemu.patch