Windows 上で UNIX 環境を構築する手順のメモ。 MinGW †主に Windows 上で GNU 開発をする為の環境。 MinGW インストール †
msys インストール †msys というのは、UNIX の端末画面(コマンドプロンプトみたいなやつ。POSIX というらしい)を Windows 上に提供するツール。
あとは、必要に応じて追加モジュールをインストールする。 msys を起動すると (ユーザ名)@(ホスト名) ~ $ というプロンプトが表示される。この時点でユーザのホームディレクトリ( msys のインストールディレクトリ/1.0/home/(ユーザ名) )がカレントになっている。 せっかくなので使ってみる。 まず、適当にディレクトリ作成。 $ mkdir work これで /home/(ユーザ名)/work というディレクトリがつくられる。 $ 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 でコンパイルできたぞ!みたいな。 補足 †All-In-One Eclipse †MinGW と msys は、All-In-One Eclipse に全部入ってるので、これを導入すれば上記手順はいらないかも。 ここから入手できる。 GCC の環境が欲しいなら、「Full All in One」の Ultimate か C/C++ を使えばよさそう。 Windows 上のパス †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/ ということ。 GnuWin32 †主に Windows 上で UNIX コマンドを使う為の環境。 GnuWin32 インストール †未着手。結構簡単らしい。上記サイトあたりを参考に。 Cygwin †Windows 上で UNIX の全機能を使う為の環境。 Cygwin インストール †主に C/C++ コンパイル環境のためのインストール方法ってことで。
早速、デスクトップの Cygwin ショートカットをクリックして起動すると (ユーザ名)@(ホスト名) ~ $ というプロンプトが表示される。この時点でユーザのホームディレクトリ( Cygwin のインストールディレクトリ/home/(ユーザ名) )がカレントになっている。このへんは msys と同じ感じ。 とりあえず使ってみる。 まず、適当にディレクトリ作成。 $ mkdir work これで /home/(ユーザ名)/work というディレクトリがつくられる。 $ 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。 補足 †make はデフォルトでインストールされないらしい †以前の Cygwin は、デフォルトで全てのモジュールがインストールされていたらしいが、最近はデフォルトが必要最小限の構成になっている。そのデフォルト構成の中に make が含まれていないので、必要な場合は選択してインストールしてやること。 Windows 上のパス †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) †最新版の 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) †Cygwin 環境を Eclipse で使う場合、デバッグや実行の構成で以下のマッピングを追加しておく必要がある。
他のドライブの場合は "C" の部分をそのドライブ名にする。 Eclipse を使う場合(その3) †Cygwin の gdb を使ってデバッグしようとすると、gdb が上手く起動しないことがある。 make までは上手くいっているのに、その先の起動で失敗する感じ。Eclipse 上では、進行状況が 80% 〜 99% くらいで先に進まなくなる。 ただ、Cygwin で直接 gdb を起動して同じプログラムをデバッグすることはできるので、これも Eclipse の問題と思われる。 この原因はよくわからない。ワークスペースや Eclipse を置くパスが長過ぎるとこうなるという報告もあるようなので、ワークスペースはなるべく短いパス(C:\work とか)にする方が良いのかもしれない。 MinGW + msys と Cygwin の両方をインストールする場合の注意 †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 それぞれの起動時に、対応するパスが追加される。 |