Windows 上で UNIX 環境を構築する手順のメモ。
主に Windows 上で GNU 開発をする為の環境。
#include <stdio.h> int main(int argc, char** argv) { printf( "Hello World!\n" ); return 0; }
C:\> cd Temp C:\Temp> gcc hello.c -o hello.exe
C:\Temp> hello Hello World!「Hello World!」が出力されれば、とりあえず OK。
msys というのは、UNIX の端末画面(コマンドプロンプトみたいなやつ。POSIX というらしい)を Windows 上に提供するツール。
あとは、必要に応じて追加モジュールをインストールする。
※ msysDTK あたりは入れておくと良い。
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 でコンパイルできたぞ!みたいな。
MinGW と msys は、All-In-One Eclipse に全部入ってるので、これを導入すれば上記手順はいらないかも。
ここから入手できる。
GCC の環境が欲しいなら、「Full All in One」の Ultimate か C/C++ を使えばよさそう。
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/
ということ。
主に Windows 上で UNIX コマンドを使う為の環境。
Windows 上で UNIX の全機能を使う為の環境。
主に C/C++ コンパイル環境のためのインストール方法ってことで。
PATH=/usr/local/bin:/usr/bin:/bin:$PATH export PATH(31行目あたり)
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 というディレクトリがつくられる。
そのディレクトリへ移動。
$ 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。
以前の Cygwin は、デフォルトで全てのモジュールがインストールされていたらしいが、最近はデフォルトが必要最小限の構成になっている。そのデフォルト構成の中に make が含まれていないので、必要な場合は選択してインストールしてやること。
(上記に記載)
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/
ということ。
Cygwin 環境を Eclipse で使う場合、デバッグや実行の構成で以下のマッピングを追加しておく必要がある。
他のドライブの場合は "C" の部分をそのドライブ名にする。
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 それぞれの起動時に、対応するパスが追加される。