MinGW-w64 を導入する
MinGW-w64 は MinGW (Minimalist GNU for Windows) の後継とも言えるプロジェクトで Windows 用のバイナリを出力可能な GCC を含む開発環境を提供している。 MSYS2 も MinGW-w64 の成果を取り込んでいるので馴染みのある人もいるだろう1。
MinGW および MinGW-w64 はどちらかと言うと Linux 系のプラットフォームで Windows 向けのビルドを行うクロスコンパイラとしての側面が強いが,もちろん Windows 用のバイナリも存在する。 MinGW-w64 の Windows 用インストーラは以下で取得できる2。
インストーラを起動すると以下のウィザード画面になる。
このまま [Next >]
。
この画面でインストールする GCC の種別を指定する。
- Version : GCC のバージョン。特に理由がない限り最新版でいいだろう(2021-10-01 時点の最新は 8.1.0)
- Architecture : ターゲットシステムのアーキテクチャ。
i686
かx86_64
のいずれかを選択する。x86_64
が64ビット版なのでご注意を - Thread : スレッドモデル。
posix
かwin32
のいずれかを選択する。win32
は Windows ネイティブ関数を使っていて速いのだが C++ 11 以降の thread, mutex, future が使えなくなる。特に理由がないのであればposix
でいいだろう - Exception : 例外処理ハンドリング。アーキテクチャによって以下を選択できる。
i686
dwarf
: DWARFsjlj
: SetJump/LongJump
x86_64
seh
: Structured Exception Handling (Windows ネイティブ。おすすめ)sjlj
: SetJump/LongJump
- Build Version : ビルドバージョン。特に理由がなければ最新版でいいだろう
種別を指定したら [Next >]
。
インストール先のフォルダを指定する。 既定のままではめっさ長い名前になるので変更したほうがいいかも?
[Next >]
でインストールを開始する。
どうもネットから指定した種別に対応する圧縮ファイルをダウンロードしてバイナリを展開しているようだ。
完了したら [Next >]
。
これで完了。 お疲れ様でした。
試しに gcc を起動してみる。 こんな感じ。
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=C:/Program\ Files/mingw-w64/latest/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/8.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-8.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw810/x86_64-810-posix-seh-rt_v6-rev0/mingw64 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev0, Built by MinGW-W64 project' --with-bugurl=https://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-posix-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-posix-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw810/x86_64-810-posix-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw810/x86_64-810-posix-seh-rt_v6-rev0/mingw64/opt/lib -L/c/mingw810/prerequisites/x86_64-zlib-static/lib -L/c/mingw810/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: posix
gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)
インストーラ自体は環境変数を変更しないのだがインストールしたフォルダに mingw-w64.bat
というのができていて,これを起動すると PATH を追加してコマンドプロンプトを起動する。
常用するのであれば自前で環境変数を変更すればよい。
削除する際はコントロールパネルの「プログラムと機能」から可能だがメチャメチャ分かりにくい名前になっている。
「プログラムと機能」の右上に検索窓があるのでそこで「mingw」と入力すれば上の画面のようになるので,これで該当プログラムを選択して削除すればいいだろう。
みんな大好き Hello World
では動作確認。 以下のコードを用意する。
#include "stdio.h"
void main(void) {
printf("hello world\n");
}
これをコンパイルして実行する。
$ gcc hello.c
$ a.exe
hello world
よーし,うむうむ,よーし。
参考図書
- プログラミング言語C 第2版 ANSI規格準拠
- B.W. カーニハン (著), D.M. リッチー (著), 石田 晴久 (翻訳)
- 共立出版 1989-06-15
- 単行本
- 4320026926 (ASIN), 9784320026926 (EAN), 4320026926 (ISBN)
- 評価
通称 “K&R”。その筋の人々には「バイブル」と呼ばれる名著(当時は)。
- Effective Modern C++ ―C++11/14プログラムを進化させる42項目
- Scott Meyers (著), 千住 治郎 (翻訳)
- オライリージャパン 2015-09-18
- 大型本
- 4873117364 (ASIN), 9784873117362 (EAN), 4873117364 (ISBN)
- 評価
C++ 再勉強中。
-
MSYS2 のインストールについては拙文「MSYS2 による gcc 開発環境の構築 ― MSYS2 のインストールから初期化処理まで」を参照のこと。 ↩︎
-
SourceForge からのダウンロードなので取扱いに注意。ページの余計なところを触らないこと(笑) ↩︎