2017-04-12 14 views
2

開発ツールにWindows 10でMinGWを使用しています。私は〜100のソースファイルを持つCプロジェクトを持っています。私はプロジェクトをビルドするためにmakefileを作成しましたが、毎回問題なく動作しました。MinGW並列化:CreateProcessエラー

しかし、-j4mingw32-makeに渡して、4つのプロセッサを並列に使用するように指示してビルドを高速化しようとしました。これは確かにビルドをスピードアップするが、唯一のしばらくの間でした:コンパイルの一見ランダムな数(数は毎回変更)した後、私はエラー

gcc.exe: error: CreateProcess: No such file or directory

を得る私も-j2と、このエラーが出るが、それあまり一般的ではないようです。

mingw32-make --version

GNU Make 4.1
Built for i686-w64-mingw32

を報告私もQtの創造主の下で大規模なC++プロジェクトを持っており、これは正確に同じ問題を呈します。

このランダムCreateProcessエラーの原因は何ですか?ここで

は失敗CreateProcessコールの例です:

CreateProcess(C:\Users\TonyK\AppData\Local\Temp\make44344-14.bat,C:\Users\TonyK\AppData\Local\Temp\make44344-14.bat,...) 
+0

M $は不正なアプリケーション、特にCreateProcessを呼び出す[アプリケーション検証者](https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=20028)を提供しています汚れたパラメータで。たぶんあなたはそれを試すことができます。 – Vroomfondel

+0

http://stackoverflow.com/questions/29450556/mingw-make-throwing-the-system-cannot-find-the-path-specified-errorの可能な複製。賞金がある間は、そのようにフラグを立てることはできません。 –

答えて

0

私は問題が何であるか知っていると思う:ブルガード。このウイルス対策プログラムは、私が遭遇した最も正直なものであり、深刻な開発者にとっては完全に非実用的です。何度も、私が自分自身で編集したプログラムを実行することを拒否しました。最後のストローは、QtCreator開発環境を中断したときでした。なぜなら、実行中の疑わしい操作(サブプロセスや何かを生成することはわかりません)と私のソースファイルが4つ失われてしまったからです。幸運にも私は同じ日のバックアップを取っていたので、数時間の労力を要しました。

私はBullGuardをアンインストールしました。

今、私のパラレルメイクは夢のように走ります!

0

は、いくつかの相互依存のビルド手順の間の同期の競合状態、すなわち不足することができます。 GNUのため

使用--trace引数が、それはしようと--output-syncグループに特定のレシピのためにすべての出力をと一緒に、ターゲットのか見て作ります。目標は、エラーを生成しているコマンドラインとファイルを確認することです。


その他の考えられる理由:

@Vroomfondelこれはmingw32-makeのバグです疑います。これは、仮.batファイルがMakefileロジックではなく内部mingw32-makeロジックの一部として作成されている場合にのみ適用できます。ここでは、CreateProcessの呼び出し時間と関連するファイルの作成のトレースをデバッグする必要があります。

もう一つの理由はregistry settings related to cmd.exe or .bat extension broken by malwareです。この場合、CreateProcessを実行するとエラーが発生し、mingw32-makeの外部にあります。