とある事情で、 GTK+ 3.0 ウィンドウ ・ アプリケーションを作成して Linux で動かすことになりました。普段は Windows を使っているので、 Linux で開発作業を進めていくのが億劫です。(ゲスト OS として Linux をインストールしてその中で作業をすることになってしまいますので。)
できることなら開発作業は Windows で進めていきたい! ということで、 Windows に MSYS2 + MinGW GCC 環境を構築して GTK+ 3.0 アプリケーション開発ができる環境を作っていきます。最終的にはアプリケーションのソースコードをそのまま Linux 環境でビルドします。
MSYS2をダウンロードする
MinGW の公式ウェブサイトは http://www.mingw.org/ですが、 こちらはどうも更新が滞っているようです。今は MSYS2 のサイトから MinGW をインストールしたほうが良いようです。(http://www.mingw.org/からダウンロードできる MSYS1 には GTK+ 2.4 パッケージは含まれていますが、 GTK+3.0 パッケージが含まれていませんでした。)
32 ビット Windows にインストールする場合は左側の msys2-i686-*.exe
をダウンロードします。64 ビット Windows にインストールする場合は右側の msys2-x86_64-*.exe
をダウンロードします。
2018 年 1 月 30 日時点でのファイル名は msys2-i686-20161025.exe
と msys2-x86_64-20161025.exe
でしたので、 以下、 64 ビット版の msys2-x86_64-20161025.exe
のインストールを例として説明していきます。
MSYS2をインストールする
ダウンロードした msys2-x86_64-20161025.exe
をダブルクリックするとインストーラーが起動します。
次へ をクリックします。
インストールするディレクトリを指定します。特に事情がなければ、 デフォルトの C:\msys64
のままで良いと思います。次へ をクリックします。
スタートメニューに追加するショートカットの指定です。そのまま 次へ をクリックします。
インストールが始まります。少し時間がかかるのでしばらく待ちましょう。
インストールが完了すると 完了 ボタンが表示されます。完了 をクリックします。
インストールが完了すると、 Windows のスタートメニューに 3 つのショートカットが追加されます。
- MSYS2 MinGW 64-bit
- MSYS2 MinGW 32-bit
- MSYS2 MSYS
MinGW 64-bit
、 MinGW 32-bit
、 MSYS
どれを選択しても UNIX ライクなシェルが起動します。それぞれの環境は独立しており、 この後インストールしていくパッケージは環境ごとに分かれています。
パッケージを更新する
インストーラーの最後の画面で MSYS2 64bit を実行中。
のチェックを入れたままにしていた場合は、 MSYS2 MSYS が起動します。
シェルを終了してしまった場合は、 スタートメニューから MSYS2 MinGW 64-bit
、 MSYS2 MinGW 32-bit
、 MSYS2 MSYS
のいずれかを起動するか、 もしくは、 インストールディレクトリ C:\msys64
の下にある mingw64.exe
、 mingw32.exe
、 msys2.exe
のいずれかを起動してください。どの方法でシェルを起動してもパッケージのインストール作業手順は同じです。
MSYS2 には Arch Linux 由来のパッケージマネージャー pacman が標準で含まれており、 パッケージマネージャー pacman を使って、 様々なパッケージを追加していくことができます。
はじめに以下のコマンドを実行してパッケージデータベースを最新にします。この処理は実際にパッケージを更新するわけではなくパッケージの一覧を新しくするだけなので、 あまり時間がかからずに終了します。
パッケージデータベースを更新するコマンド$ pacman -Sy
パッケージデータベースの更新が終了したら、 続いて以下のコマンドを実行してパッケージをアップグレードします。
パッケージをアップグレードするコマンド$ pacman -Su
「インストールを行いますか?」 と確認メッセージが出るので、 そのまま Enter キーを押すか、 Y または y を入力してから Enter キーを押します。
インターネット通信環境にもよりますが、 パッケージのアップグレード処理には少し時間がかかります。そして、 以下のメッセージが出て処理が止まることがあります。
- terminate MSYS2 without returning to shell and check for updates again for example close your terminal window instead of calling exit
「シェルに戻らずに MSYS2 を終了し、 もう一度、 更新をチェックしてください。たとえば、 exit コマンドを呼ぶ代わりにターミナル ・ ウィンドウを閉じてください。」 といった意味ですね。
この状態ではもうキー入力を受け付けないので exit コマンドを入力することもできません。指示通り、 ウィンドウ右上の×ボタンを押します。すぐに反応しない場合は、 何度か×ボタンを押して 10 秒程度待ってみてください。
このようなダイアログが表示されたら OK をクリックして終了します。
もう一度、 スタートメニューから MSYS2 MinGW 64-bit
、 MSYS2 MinGW 32-bit
、 MSYS2 MSYS
のいずれかを起動して、 パッケージのアップグレードをします。
パッケージをアップグレードするコマンド$ pacman -Su
先程と同じ確認メッセージが出るので、 そのまま Enter キーを押すか、 Y または y を入力してから Enter キーを押します。
今度は無事にシェル ・ プロンプトに復帰しました。プロンプトに復帰したら、 「何も行うことがありません」 と表示されてパッケージ更新の必要がなくなるまで、 pacman -Su
を繰り返し実行してください。
GCCパッケージをインストールする
パッケージを更新したら、 ようやく GCC コンパイラのインストールです。pacman
に -Ssq
オプションを付けて gcc
を含むパッケージを検索してみます。
gccを含むパッケージを検索するコマンド$ pacman -Ssq gcc
$ pacman -Ssq gcc
mingw-w64-i686-gcc
mingw-w64-i686-gcc-ada
mingw-w64-i686-gcc-fortran
mingw-w64-i686-gcc-libgfortran
mingw-w64-i686-gcc-libs
mingw-w64-i686-gcc-objc
mingw-w64-i686-lcov
mingw-w64-x86_64-gcc
mingw-w64-x86_64-gcc-ada
mingw-w64-x86_64-gcc-fortran
mingw-w64-x86_64-gcc-libgfortran
mingw-w64-x86_64-gcc-libs
mingw-w64-x86_64-gcc-objc
mingw-w64-x86_64-lcov
gcc
gcc-fortran
gcc-libs
mingw-w64-cross-gcc
たくさんのパッケージが見つかりました。gcc-fortran
や gcc-obj
などが末尾に付くものは C/C++ではなく別の言語のパッケージなので無視できますが、 gcc 本体だけでも以下の 3 種類のパッケージがあります。
mingw-w64-i686-gcc
MinGW gcc コンパイラ (32 ビット版)mingw-w64-x86_64-gcc
MinGW gcc コンパイラ (64 ビット版)gcc
MSYS gcc コンパイラ
パッケージ名に何も付いていない gcc
は MSYS のパッケージで、 MSYS のシェル内で使うことを想定しているパッケージです。頭に mingw-w64-i686-
と付いているのは MinGW 32-bit のパッケージです。(32 ビットパッケージなのに w64
と付いていて紛らわしいですね。) mingw-w64-x86_64-
と付いているものが MinGW 64-bit のパッケージです。MinGW 32-bit パッケージや MinGW 64-bit パッケージは MinGW シェルの中だけでなく、 Windows のコマンドプロンプト (cmd.exe) などからも使うことができます。
最終的には Eclipse CDT から gcc を呼び出して C/C++アプリケーションをビルドするのが目的なので、 MSYS2 シェルからしか使えない gcc
パッケージではなく、 外部からも呼び出せる mingw-w64-x86_64-gcc
パッケージをインストールします。
パッケージのインストールには pacman
の -S
オプションを使用します。
mingw-w64-x86_64-gccパッケージをインストールするコマンド$ pacman -S mingw-w64-x86_64-gcc
mingw-w64-x86_64-gcc
パッケージと一緒に mingw-w64-x86_64-binutils-2
などの依存パッケージも自動的にインストールしてくれるようになっています。
「インストールを行いますか?」 と確認メッセージが出るので、 そのまま Enter キーを押すか、 Y または y を入力してから Enter キーを押します。
gccコマンドの確認
mingw-w64-x86_64-gcc
パッケージのインストールが完了したら gcc
コマンドが使えるか確認しておきます。
プロンプトで以下のコマンドを実行してみてください。
gccのバージョンを表示するコマンド$ gcc --version
コマンドを実行したシェルが MSYS だった場合、 残念ながら gcc
コマンドが見つからないというメッセージが表示されます。
これは、 MSYS、 MinGW 64-bit、 MinGW 32-bit それぞれで環境が分離されており、 それぞれのパッケージコマンドがお互いに見えないようになっているからです。
MSYS シェルの代わりに MinGW 64-bit シェルを起動して、 gcc --version
を実行してください。
MinGW 64-bit シェルであれば、 mingw-w64-x86_64-
で始まるパッケージのコマンドが使えるようになっています。
Windows のコマンドプロンプト (cmd.exe) でも PATH
環境変数に C:\msys64\mingw64\bin
を追加すれば、 gcc
コマンドを使うことができます。
これで、 MinGW gcc のインストールは完了です。
makeパッケージをインストールする
Makefile を処理するのに必要になる make
コマンドもインストールしておきます。
make
パッケージも 3 つあります。
mingw-w64-i686-make
MinGW make コマンド (32 ビット版)mingw-w64-x86_64-make
MinGW make コマンド (64 ビット版)make
MSYS make コマンド
gcc
は mingw-w64-x86_64-
で始まるパッケージをインストールしましたが、 make
コマンドは mingw-w64-
の付かない MSYS の make
パッケージをインストールします。
mingw-w64-*-make
の場合はコマンドの名前が make.exe
ではなく mingw32-make.exe
となっており、 自分で make.exe
にリネームするなどの手間がかかります。
makeパッケージをインストールするコマンド$ pacman -S make
これで、 make のインストールも完了です。
次回は Eclipse CDT をインストールしていきます。