2014年11月12日

MinGW/Msysのmake.exeを使うな !? 2014

MinGW/Msysのmake.exeを使うな !? 2014
別に、使いたい人は使えばいいんだけど。。。 (爆

MinGW/Msysのコンソール(or mintty(お勧め))又は、
MinGW/Msysのbinにパスを通してMS-DOSコマンドラインで使う時の話。
普通の使い方だけど。。。

make.exe がどうも良くないのだ

正確には「Msysのmake.exe」。

* 依存関係ファイル解析が激遅い orz
gcc系(arm-none-eabi-gcc含む)のコンパイラで「-MD/-MMD」オプション等を使って依存関係ファイルを生成
した場合、依存関係ファイル数がある程度大きくなると解析に膨大な時間がかかり、
なかなかコンパイルが始まらないという現象。
makeが悪いのだった。orz

* 回避方法
2回目以降のmake時に「make -r」とすれば良いらしい。
これだと1回目はやっぱり遅いのだった。 orz
根本的な解決になっていない。

LPCXpressoも困っている様だった :D :
いくつか前のリリースノートに「make -r することにした」、
という記述があった。
その時は、「???」で放置していた。
LPCXpressoも内部で同様にMsysのmakeを使っているのだ。

って事は、1回目はorzなLPCXpresso xD
及び、コンパイルオプションを変更すると必ずフルビルドがかかるので、orz
となる。
orz

* 解決方法:
MinGW/Msysを使わない:
    (1) Cygwin/Linuxなら無問題なので、この際乗り換える。 xD
    (2) 軽量な「gnupack」(注1)にする。(cygwinの軽量版)
MinGW/Msysのmake.exeを使わない:
    最終的にこの方法を選択した。。
    (a) MinGWコンソールか、MS-DOSコマンドラインから「makeを削除します」
        
$ mingw-get remove msys-make
(b) 大丈夫なmake.exeに入れ替える。 http://sourceforge.net/projects/gnuwin32/files/make/3.81/ から、今なら「make-3.81.exe」をゲットして全角や空白を含まないフォルダにインストールします。 (c) Windowsの環境変数PATHに例えば、以下を追加しておきます。 c:\GnuWin32\bin これで大丈夫 (^^)/ と思ったものの、:D 大丈夫かどうかは確認が必要で、もしMinGW/Msysのコンソールからmakeが見えない時は、 ホームの「.bashrc」(.bashrcを使用している場合)或いは、「.profile」に以下を追加しておきます。
export PATH=/c/GnuWin32/bin:$PATH
コンソールを再起動して、whichで確認します。
$ which make
/c/GnuWin32/bin/make.exe
(^^)/ (注1) 現バージョンは古そうなので、アップデートできないならパスした方が良いかも。 例のbashやsshのバグがあるし。
posted by Copyright (C) avrin All Rights Reserved. at 00:00| Comment(0) | Cygwim/MinGW | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。