gcc の導入と utf-8 コンパイル

Windows 用のフリーソフト MinGw には、gcc というコンパイラが含まれており、これで C のソースコードをコンパイルして、拡張子 EXE のアプリケーションを生成することができる。ようするに、Windows 用のソフトをつくるソフトである。

パスを通す

導入は簡単で、たとえば C:\MinGw\ というフォルダを指定してインストールしたのち、環境変数 Path に C:\MinGw\bin\ を加えればよい。この行為のことを「パスを通す」と呼ぶ。こうすることによって、コマンドプロンプトにて、カレントディレクトがどこであっても、gcc.exe こと gcc コマンドを実行することができるようになる。gcc.exe は C:\MinGw\include\ フォルダなどを参照するが、それらのフォルダのパスまでをも通す必要はない。

gcc を用いたコンパイルとリンクは至って簡単で、C ソースコード hello.c に対しては、以下のようなコマンドを実行すればよい。

gcc hello.c -mwindows -DUNICODE

コマンドラインオプション

重要なオプションが 2 つある。

  • -mwindows
  • -DUNICODE

コンソール画面を開かないようにする

まず、-mwindows というオプションである。これを付加すると、典型的な Windows GUI アプリケーションとしてコンパイルする。

gcc --help -v というコマンドを実行すると、オプション一覧と、その効果が表示されるが、そこでは、以下のように説明されている。

-mwindows Create GUI application

utf-8 のソースをコンパイルする

-DUNICODE というオプションは、文字コードutf-8ソースコードをコンパイルするために必要なものだ。

たとえば、Unicode 文字の☃雪だるまマークを表示する、次の snow.c というソースコードがあったとする。文字コードutf-8 だ。

#include <windows.h>
int WINAPI WinMain(HINSTANCE hi, HINSTANCE hp, LPSTR cl, int cs) {
  MessageBox(NULL, TEXT("☃"), TEXT(""), MB_OK);
  return 0;
}

gcc snow.c -mwindows -DUNICODE でコンパイルすると、正しい雪だるまマークを表示することができる。

gcc snow.c -mwindows だと、文字化けする。

笘・