make:キャッチされた割り込み/例外


33

MinGWディストリビューションのMakeを使用しています。常に機能していましたが、最近、次のエラーが発生しました。

> make clean
make: Interrupt/Exception caught (code = 0xc0000005, addr = 0x0040b0ac)

そして、それぞれの部分は次のようになります。

clean:
    del /S /Q *.o > nul
    del /S /Q *.cy.c > nul
    del /S /Q *.pyc > nul
    del /S /Q *.pyo > nul
    if EXIST build (rmdir /S /Q dist > nul)

何がこれを引き起こすのか分かりません。特に、常に完璧に機能しているからです。


1
makeを更新しようとしましたか?gnu.org/software/make
ファビアンエレディアモンティエル

回答:


46

私も例外を取得し始めていました:

make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4227d3)

別の理由かもしれませんが、この問題は、Windows Vista / 7の場合のように、PATH変数に括弧(、が含まれている場合に明らかに発生します)。残念ながら、利用可能なGNU for Windowsは絶望的に古くなっています。

私の問題はmake、正しいシェルの使用を強制することで修正されました。メイクファイルの先頭に次の行を挿入します。

SHELL=C:/Windows/System32/cmd.exe

最適なソリューションが、私はそれが働いていなかった理由はわからないが、私は私の環境変数で括弧を持っていない
forsubhi

1
PATHの長さにも関係があるのでしょうか?私の場合、私のPATHには既に問題なく多くの括弧がありました(さらにいくつかのものをインストールするまで)。すべてのインスタンス置き換えるC:\Program FilesC:\PROGRA~1してC:\Program Files (x86)C:\PROGRA~2私のための問題を修正します。+1 :-)
キャメロン14年

また、私はこの問題を持っていた、とメイクの新しいバージョンへの切り替え:equation.com/servlet/equation.cmd?fa=make -これは問題を解決しませんでしたが、それはより良い例外を処理し、何が起こっているかがわかります。sh: C:\Program: No such file or directoryですSHELL変数を渡さない場合に取得する最初の行。基本的に、PATH上の「Program Files」の各インスタンスには、適切にエスケープされていないスペースが含まれます(makeに関する限り)。これはパスの長さではなく、この問題を引き起こしているスペースです。これは、スペースを修正せずにマクロを使用する理由を説明しています。
ヨハネス

このソリューションは私のために働いた。
ロバート・スティフラー

8

GitのbinディレクトリをPATH環境変数に追加すると、この問題が発生しました。理由は、GitにはMSYSのバージョンが付属しており、MinGWと競合しているように見えるためです(MSYSおよび/またはMinGWの正しいバージョンである場合は競合しないかもしれませんが、それは推測に過ぎません)。

したがって、に(他の)MSYSディストリビューションがないことを確認してくださいPATH


1
binディレクトリへのGitパスが問題でした!よくやった !
TridenT 14

3

Norbet P.の答えにさらに、私は以下を追加することがわかりました:

PATH=

Makefileの一番上にこの特定の問題を修正しました。


1
私は-1を与えていませんが、これは恐ろしく悪い答えです。PATHをリセットすることはできません!!! これは非常に悪い習慣です!プログラムのコンパイルは、PATHの情報に依存する場合があります。
量子物理学者


2

2006年 11月26日に前回のリリースが投稿されたことに気付くまで、GnuWinを使用しました。それは少し不自由で、上記のような問題を引き起こしました。SHELL = C:/Windows/System32/cmd.exeを設定するといくつかの問題は解決しますが、新しいオペレーティングシステムでそのような古いコードを実行すると安全ではないと感じます

MinGwはより安全な賭けです。MinGwは、「Minimalist GNU for Windows」の頭字語であり、最新であり、makeおよびその他のツールが含まれています。

http://sourceforge.net/projects/mingw/files/


1
質問も読んでいますか?
orlp

1

Windowsエラーコード0xC0000005は、アクセス違反またはセグメンテーション違反を示しています。

  • MinGWインストールが破損していますか?
  • システムは適切に構成されていますか?最近システムの設定を変更しましたか?
  • システムにハードウェアの問題はありますか?CHKDSKを使用してハードドライブをスキャンするか、Memtest86 +などのメモリテストを実行する必要がある場合があります。

-1

コンパイルログで、Windowsプラットフォームを使用しているにもかかわらず、「SHELL = sh」がmakeに渡されていることに気付きました。私のMakfileは次のようになりました。

ifneq(、$(findstring win、$(RDI_PLATFORM)))SHELL = CMD endif

ifneqにコメントして終了すると、機能し始めました。プラットフォームが正しく解釈されなかった理由がわかりません。


1
これは元の質問に対する答えではありません。投稿者に批評または説明を依頼するには、投稿の下にコメントを残します-自分の投稿にいつでもコメントできます。評価が十分になったら、投稿にコメントできます。
DavidPostill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.