make
を実行すると次のエラーが表示されますが、それが何を意味するのか、どうすればよいのかわかりません。誰もが私を照らしたり、正しい方向に私を向けることができますか?
(cd libdvdnav-git && patch -p1) < ../../contrib/src/dvdnav/dvdnav.patch
patching file Makefile.am
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.am.rej
make: *** [dvdnav] Error 1
Win32用にVLCをクロスコンパイルしようとしています(Linuxを使用)。
patch
によって生成されたエラーです。 .patch
ファイルを開くと、「ハンク」と呼ばれる一連のセグメントで構成されていることがわかります。すべてのハンクは、古いバージョンと新しいバージョンの対応するコード(行番号)、それらのコードの違い、およびそれらの間の類似性(「コンテキスト」)を識別します。
ハンクの類似性が元のファイルの内容と一致しない場合、ハンクは失敗する可能性があります。このエラーが表示される場合、ほとんどの場合、パッチを適用しているコードのバージョンが間違っているためにパッチを使用しているためです。これを回避するにはいくつかの方法があります。
libdvdnav
の更新バージョンを取得します(最適なオプション)。libdvdnav
のバージョンの.patch
ファイルを取得します。libdvdnav
内の対応するファイルと行を見つけ、パッチの指示に従って修正してください。.patch
ファイルが意図したバージョンに近いlibdvdnav
のバージョンを使用します(おそらく悪い考えです)。デバッグのヒント
markus@ubuntu:~$ patch -Np1 --ignore-whitespace -d software-1.0 < fix-bug.patch
参照 markusによるチュートリアル場合によっては、ファイルバージョンに違いはありませんが、インデント、スペース、行末または行番号にのみあります。
これらの違いにもかかわらずパッチを適用するには、次の2つの引数を使用することができます:
-ignore-whitespace:空白の違い(インデントなど)を無視します。
-fuzz 3:the "--fuzz[〜#〜] x [〜#〜] "オプションは、最大ファズ係数をラインに設定します。このオプションは、コンテキストおよび統合差分にのみ適用されます。ハンクをインストールする場所を探している間、[〜#〜] x [〜#〜]行まで無視します。ファズファクターを大きくすると、パッチの不具合が発生する可能性が高くなります。デフォルトのファズ係数は2です。 diffのコンテキストの行数(通常は3行)以上に設定しても意味がありません。
ユーザー "--dry-run"を忘れないでください:パッチを適用せずに試してみます。
例:
patch --verbose --dry-run --ignore-whitespace --fuzz 3 < /path/to/patch.patch
ファズに関する詳細情報:
https://www.gnu.org/software/diffutils/manual/html_node/Inexact.html
指示に従ってください ここ 、それは私の問題を解決しました。
次のようにコマンドを実行する必要があります。 patch -p0 --dry-run <path/to/your/patchFile/yourPatch.patch