Windows 上で UNIX 環境を構築する手順のメモ。 #contents * MinGW [#afb07e69] 主に Windows 上で GNU 開発をする為の環境。 - [[MinGW | Minimalist GNU for Windows:http://www.mingw.org/]] -- [[Download(sourceforge.net):http://sourceforge.net/projects/mingw/]] ** MinGW インストール [#f9560b94] + ダウンロードサイトから MinGW-x.x.x.exe (インストーラ) をダウンロード。 -- [[ダウンロード:http://sourceforge.net/projects/mingw/]] + ダウンロードされた MinGW-x.x.x.exe をどこか適当なところへ移動。 -- 実行したフォルダにいろいろダウンロードされるので、荒らされてもいい場所で。 + MinGW-x.x.x.exe (インストーラ) を起動。 + 「Download and Install」を選択して「Next」。 + お約束画面が出てくるので「I Agree」を押して次へ。 + パッケージは「Current」(最新バージョン) を選択して次へ。 + コンポーネントを選択する。 -- 「MinGW base tools」は必ず選択。 -- あとは開発したい言語によってお好みで選択。&br; よくわからなければ全部選択で。全部選んでも 160MB 程度。 -- 選択したら「Next」。 + インストールフォルダを入力して「Next」。 -- デフォルトなら「C:\MinGW」 + スタートメニューの名前を適当につけて「Install」。 -- デフォルトで「MinGW」。 + あとは勝手にダウンロードやインストールが実行される。 + 終わったら「Finish」。 + bin フォルダにパスを通しておく。 -- デフォルトなら「C:\MinGW\bin」 + 試しに次のようなコードを書いて、C:\Temp あたりに hello.c として保存。 #include <stdio.h> int main(int argc, char** argv) { printf( "Hello World!\n" ); return 0; } + gcc でコンパイルしてみる。 C:\> cd Temp C:\Temp> gcc hello.c -o hello.exe + hello.exe が出力されるはずなので、実行してみる。 C:\Temp> hello Hello World! 「Hello World!」が出力されれば、とりあえず OK。 ** msys インストール [#p18d9252] msys というのは、UNIX の端末画面(コマンドプロンプトみたいなやつ。POSIX というらしい)を Windows 上に提供するツール。 + msys のインストーラをダウンロード。 -- [[ここ:http://sourceforge.net/projects/mingw/files/]] から MSYS-x.x.x.exe というやつを見つけてゲットする。 -- MSYS Base System/msys-1.0.11 あたりにある。&br; ※最新にはインストーラがないっぽい? + MSYS-x.x.x.exe を起動。 + お約束画面などはさらっと流す。 + コンポーネントの選択では、多分選択肢は1個しかないのでそのままで。 + インストールフォルダの選択に、UNIX のホームディレクトリを置きたい場所を選ぶ。 -- デフォルトで「C:\msys\1.0」になっている。&br; この場合、「C:\msys\1.0\home\(ユーザ名)」がホームディレクトリになる。&br; + スタートメニューは MinGW と同じ場所につくれば OK。 + インストールの最後にコマンドプロンプトが起動する。 + インストールを続けるかを聞いてくるので「y」を入力。 + MinGW がインストール済みか聞いてくるので「y」を入力。 + MinGW がインストールされているディレクトリを聞いてくるので、適切に入力。 -- デフォルトのままなら「C:\MinGW」。 + 「何かキーを押してください」になったら、そのまま Enter で終了。 -- これでデスクトップ上に msys の起動ショートカットが作成される。 + msys の bin ディレクトリ(デフォルトで C:\msys\1.0\bin)をパスに追加。 あとは、必要に応じて追加モジュールをインストールする。&br; ※ msysDTK あたりは入れておくと良い。 msys を起動すると (ユーザ名)@(ホスト名) ~ $ というプロンプトが表示される。この時点でユーザのホームディレクトリ( msys のインストールディレクトリ/1.0/home/(ユーザ名) )がカレントになっている。 せっかくなので使ってみる。 まず、適当にディレクトリ作成。 $ mkdir work これで /home/(ユーザ名)/work というディレクトリがつくられる。&br; そのディレクトリへ移動。 $ cd work そこに hello.c という名前のファイルをつくってみる。 $ vim hello.c ※ vim というのは、いわゆる vi エディタ(UNIX標準のテキストエディタ)。 以下のソースを書いて :wq で保存終了。 #include <stdio.h> int main(int argc, char** argv) { printf( "Hello World!\n" ); return 0; } ※Windows な人は多分使い慣れないと思うので、上で作った hello.c をコピーしてきても OK。 コンパイルしてみる。 $ gcc hello.c -o hello これで hello.exe がつくられるので、実行してみる。 $ hello Hello World! 「Hello World!」が出力されれば OK。おお、UNIX でコンパイルできたぞ!みたいな。 ** 補足 [#v443b952] *** All-In-One Eclipse [#t22b2bff] MinGW と msys は、All-In-One Eclipse に全部入ってるので、これを導入すれば上記手順はいらないかも。 ここから入手できる。 - [[Eclipse 日本語化 - MergeDoc Project:http://mergedoc.sourceforge.jp/]] GCC の環境が欲しいなら、「Full All in One」の Ultimate か C/C++ を使えばよさそう。 *** Windows 上のパス [#a34043d3] msys 上では、C:\ がルートフォルダに、msys のインストールフォルダが /usr に割り当てられている。 C:\msys\1.0 にインストールしたとするなら、 C:\ → / C:\msys\1.0 → /usr C:\msys\1.0\local → /usr/local C:\msys\1.0\home → /usr/home または ~/ という感じ。 Cドライブや Dドライブから直接参照する場合は /c、/d とする。 つまり、 C:\ → /c または / C:\Windows → /c/Windows/ D:\ → /d/ D:\hogehoge → /d/hogehoge/ ということ。 //*** Eclipse を使う場合 [#s325c23c] //MinGW/msys 環境を Eclipse で使う場合、デバッグや実行の構成で以下のマッピングを//追加しておく必要がある。 // //+ Eclipse の「実行」→「デバッグの構成」を開く。 //+ 「C/C++ アプリケーション」の「ソース」タブで以下のパス・マッピングを追加。 //-- コンパイル・パス : \c\ //-- ローカル・ファイル・システム・パス : C:\ // //他のドライブの場合は "C" の部分をそのドライブ名にする。 * GnuWin32 [#t350e018] 主に Windows 上で UNIX コマンドを使う為の環境。 - [[GnuWin32:http://gnuwin32.sourceforge.net/]] - [[GnuWin32 プロジェクト日本語:http://sourceforge.jp/projects/freshmeat_gnuwin32/]] ** GnuWin32 インストール [#c0229259] 未着手。結構簡単らしい。上記サイトあたりを参考に。 * Cygwin [#t7213e5e] Windows 上で UNIX の全機能を使う為の環境。 - [[Cygwin Information and Installation:http://www.cygwin.com/]] - [[Cygwinのインストール&設定方法:http://musashi.sourceforge.jp/cygwin/cygwin.html]] ** Cygwin インストール [#idfe125b] 主に C/C++ コンパイル環境のためのインストール方法ってことで。 + Setup.exe をダウンロード。 -- [[http://www.cygwin.com/]] + Setup.exe を起動。 + Install from Internet を選択して次へ。 + Cygwin をインストールするフォルダを設定。 -- デフォルトで C:\Cygwin -- このフォルダの下にホームディレクトリも作成される。 --- 環境変数に HOME が設定されているとそこがホームになる。イヤな人は HOME を消しとく。 + 誰でも使えるようにするか、自分だけしか使えないようにするかを選択して次へ。 -- お家の PC なら、誰でもで良いかと。 + 初回インストール時は、新たに Cygwin を入れちゃうよ!という警告が表示されるので、そのまま OK でスルー。 -- 多分、Update しようとしてる人が間違って新しくインスコするのを防止したいんだと思う。 + Proxy の設定を問われる。 -- Proxy を使ってない場合は Direct Connection で。 -- IE の設定を使う場合は、Use IEx Setting で。 -- Proxy サーバが分かる場合は一番下を選んで設定する。 + ダウンロードするサイトを選ぶ。 -- どこでもいいけど、日本(.jp なサイト)を選ぶとちょっと早いかも。 -- http と ftp がある場合は、ftp の方がちょっと早いかも。 --- ftp で上手くいかない場合は http にすると良い。 + Select Packages の画面で、C/C++ コンパイラを選択する。 -- Devel - gcc-core をクリック。Skip → バージョン番号 になれば OK。 -- 同時に必要な他のモジュールも選択されるので、そのままで。 -- make も必要なら Devel - make も選択する。 -- それ以外は多分デフォルトのままで OK。 --- vi エディタを使いたい場合は、標準の vi だと日本語が化けるので外しておいて、別途日本語対応したやつ(あるはず)を入れると良いかも。 --- 気になるなら Editors の中をチラ見しとく。 + 次へ進むと、ダウンロードとインストールが始まる。 + 一通り終わったら、ショートカットとスタートメニューの作成を問われるので、よしなに。 + あと、GCC でコンパイルするためのパスが Cygwin 起動時に設定されるようにしておく。&br; (Cygwin インストールディレクトリ)/etc/profile を開いて、次の行を見つける&br; PATH=/usr/local/bin:/usr/bin:/bin:$PATH export PATH (31行目あたり)&br; この PATH と export の間にパスを追加。以下のような感じにする。 PATH=/usr/local/bin:/usr/bin:/bin:$PATH PATH=/usr/include/:$PATH PATH=/usr/include/mingw/:$PATH # ← mingw を入れた場合 export PATH 早速、デスクトップの Cygwin ショートカットをクリックして起動すると (ユーザ名)@(ホスト名) ~ $ というプロンプトが表示される。この時点でユーザのホームディレクトリ( Cygwin のインストールディレクトリ/home/(ユーザ名) )がカレントになっている。このへんは msys と同じ感じ。 とりあえず使ってみる。 まず、適当にディレクトリ作成。 $ mkdir work これで /home/(ユーザ名)/work というディレクトリがつくられる。&br; そのディレクトリへ移動。 $ cd work そこに hello.c という名前のファイルをつくってみる。 $ vim hello.c 以下のソースを書いて :wq で保存終了。 #include <stdio.h> int main(int argc, char** argv) { printf( "Hello World!\n" ); return 0; } コンパイルしてみる。 $ gcc hello.c -o hello これで hello.exe がつくられるので、実行してみる。 $ ./hello Hello World! ※ msys と違って、./ を付けないと実行してくれないので注意。 「Hello World!」が出力されれば OK。 ** 補足 [#eef18b19] *** make はデフォルトでインストールされないらしい [#vd8378ef] 以前の Cygwin は、デフォルトで全てのモジュールがインストールされていたらしいが、最近はデフォルトが必要最小限の構成になっている。そのデフォルト構成の中に make が含まれていないので、必要な場合は選択してインストールしてやること。&br; (上記に記載) *** Windows 上のパス [#w5e7687c] Cygwin 上では、Cygwin のインストールフォルダがルートに割り当てられている。 C:\Cygwin にインストールしたとするなら、 C:\Cygwin → / C:\Cygwin\usr → /usr C:\Cygwin\usr\local → /usr/local C:\Cygwin\home → /home または ~/ という感じ。msys が C:\ をルートにしているのに対して Cygwin は異なるので注意。 Cドライブや Dドライブから直接参照する場合は /cygdrive/c、/cygdrive/d とする。 つまり、 C:\ → /cygdrive/c/ C:\Windows → /cygdrive/c/Windows/ D:\ → /cygdrive/d/ D:\hogehoge → /cygdrive/d/hogehoge/ ということ。 *** Eclipse を使う場合(その1) [#u492315d] 最新版(1.7 以降?)の Cygwin はレジストリをしないようになっているらしく、レジストリから Cygwin の存在を認識している Eclipse は ツールチェインとして Cygwin を認識しない。ただ、認識しないだけで、実際に Cygwin を使うことはできる。 最新版の Cygwin (1.7 以降?)はレジストリを使用しないようになっているらしく、レジストリから Cygwin の存在を認識している Eclipse は ツールチェインとして Cygwin を認識しない。ただ、認識しないだけで、実際に Cygwin を使うことはできる。 でも、やっぱり気持ち悪いという場合は、レジストリに以下を設定しておくとスッキリするかも(古い Cygwin が書き込む内容)。 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions] [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin] [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2] "cygdrive prefix"="/cygdrive" "cygdrive flags"=dword:00000022 [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/] "native"="C:\\cygwin" "flags"=dword:0000000a [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/bin] "native"="C:\\cygwin/bin" "flags"=dword:0000000a [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/lib] "native"="C:\\cygwin/lib" "flags"=dword:0000000a [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\Program Options] ※ "C:\\cygwin" という部分はインストールフォルダに応じて書き換えること。 *** Eclipse を使う場合(その2) [#teaae265] Cygwin 環境を Eclipse で使う場合、デバッグや実行の構成で以下のマッピングを追加しておく必要がある。 + Eclipse の「実行」→「デバッグの構成」を開く。 + 「C/C++ アプリケーション」の「ソース」タブで以下のパス・マッピングを追加。 -- コンパイル・パス : \cygdrive\c\ -- ローカル・ファイル・システム・パス : C:\ 他のドライブの場合は "C" の部分をそのドライブ名にする。 *** Eclipse を使う場合(その3) [#f2425cff] Cygwin の gdb を使ってデバッグしようとすると、gdb が上手く起動しないことがある。 make までは上手くいっているのに、その先の起動で失敗する感じ。Eclipse 上では、進行状況が 80% 〜 99% くらいで先に進まなくなる。 ただ、Cygwin で直接 gdb を起動して同じプログラムをデバッグすることはできるので、これも Eclipse の問題と思われる。 この原因はよくわからない。ワークスペースや Eclipse を置くパスが長過ぎるとこうなるという報告もあるようなので、ワークスペースはなるべく短いパス(C:\work とか)にする方が良いのかもしれない。 *** MinGW + msys と Cygwin の両方をインストールする場合の注意 [#ua52f1d5] MinGW と Cygwin は特に競合することはないようだけど、パスだけは OS 共通の環境変数を参照しているので、両方設定してしまうと、どっちがどっちのコマンドを使ってるのかわからなくなる。 なので、MinGW(というか、msys)と Cygwin の両方を同じマシンに入れる場合は、あえてパスを環境変数に設定しないようにする。 そして、それぞれの起動バッチの先頭にパスを追加するコマンドを追加する。 msys は、msys のインストールフォルダ直下に msys.bat があり、 これで起動するので、このバッチの先頭に以下の行を追加。 SET PAHT=(msys のインストールフォルダ)\bin;(MinGW のインストールフォルダ)\bin;%PATH% Cygwin は、Cygwin のインストールフォルダ直下に cygwin.bat があり、 これで起動するので、このバッチの先頭に以下の行を追加。 SET PAHT=(Cygwin のインストールフォルダ)\bin;%PATH% これで、msys、Cygwin それぞれの起動時に、対応するパスが追加される。 ----- [[MLEXP. Wiki]]