藤井のスタートページ

はじめに

Windows Program 開発のためのフリーのツールの一つとして fileMinGW - Minimalist GNU for Windows がある。この文書は、それを使うためのメモである。

MinGW は Windows 版の gcc/g++ を中心とした program package (resource compiler も用意されている(windres又はwrc))であり、 その実行環境にはいくつかの選択肢がある。例えば

  • Windows のコマンドプロンプトで頑張る
  • Cygwin 環境下で行う
  • MSYS 環境下で行う
  • Dev-C++ で行う
  • fileEclipse の CDT を使う

などがある。

gcc をコマンドプロンプトで使うだけなら、PATH に MinGW の インストール先の bin (default では C:\mingw\bin )を付け加えておくだけでよい。 なお、Windows Programming 関連については以下の別ページも参照のこと。

Windows 7 に関する追記 (2010年5月25日)

Windows 7 で gcc/g++ をコマンドプロンプトで動かしてみた。 標準ユーザでも問題無さそうであることを確認した。

日本語(SHIFT_JISコード)ソースファイルも扱いたかったので、 gcc-core と gcc-g++ は 3.4.5-20060117-1 にした。 パッケージのバーションは

  • binutils 2.20.1
  • gcc-core 3.4.5-20060117-1
  • gcc-g++ 3.4.5-20060117-1
  • runtime-dll 3.18
  • runtime-dev 3.18
  • w32api-dev 3.14

を使った。いずれも tar+gzip されているものをとってきて tar zxvf で USB メモリに展開。インストール先 Windows 7 機に管理者アカウントで ログオン。その USB を Windows 7 機に差して、\mingw フォルダ以下を ごっそり C:\mingw に copy。その後、

  • コントロールパネル
  • システムとセキュリティ
  • システム(右側ペインにある)
  • システムの詳細設定(左側ペインにある)

と選んで「詳細設定」タブで「環境変数」を選んで、システム環境変数の PATH に C:\mingw\bin を追加。これで完了。

g++ -finput-charset=CP932 -fexec-charset=CP932

で SHFT_JIS の日本語も大丈夫("機構" の文字列も大丈夫)。

なお、インストールしなくとも、標準ユーザで USB に置いた まま PATH だけを通してもうまくいった。例えば、USB メモリが ドライブ D: だとすると、コマンドプロンプトに入ったら、

SET PATH=D:\mingw\bin;%PATH%

とすればよい。

参考リンク

文字コード問題

文字コードはやっかいな問題である。WindowsNT系及びCE系は base が Unicode (UCS-2LE) なので、文字列 literal などは、 その文字コードで program を書きたいところだが、これが難しい。 現在(2006年1月6日)gcc 3.4.2 (mingw-special) で動かしているが、 文字コード指定がなかなかうまくいかない。

(26-May-2010)追記

gcc/g++ の option -finput-charset、-fexec-charset だが、 3.4.5-20060117-3 ではうまくいかない。どうも iconv が link されていないらしい。3.4.5-20060117-1 の方はうまくいく。

Shift_JIS

とりあえず、日本語を通したければ Shift_JIS で書いて、

gcc -finput-charset=CP932 -fexec-charset=CP932 infile.c

とすれば、Shift_JIS base のプログラムはできる。0x5C 問題 も無いみたいだ。 (だがなぜか、CP932 の代わりに SJIS と書いても SHIFT_JIS と 書いても MS_KANJI と書いてもうまくいかない -- iconv で受け付ける ものは OK のハズなんだが、、)。

UTF-8

gcc の入力の文字コードの default は UTF-8 とのことなので、 「メモ帳」を使って、UTF-8 で保存して

gcc -fexec-charset=CP932 infile.c

としてもうまくいかない。これは、「メモ帳」が UTF-8 のファイルで あることを示すために、先頭に 0xEF 0xBB 0xBF の3バイトを付加する ためで(これは幅0のスペース文字)、この3バイトを除去してやれば 上記記述でうまくいく。

_T マクロの利用

Windows programming をやったことがある人間なら知っていると思われる が、95系と NT系、CE系のソースを共用させる目的で _Tマクロをよく 利用する。例えば

#ifdef UNICODE
#define _UNICODE
#endif
#include <windows.h>
#include <TCHAR.H>

int WINAPI WinMain (HINSTANCE hInstance, 
                    HINSTANCE hPrevInstance, 
                    PSTR szCmdLine, 
                    int iCmdShow) 
{
  TCHAR msg[] = _T("高エネルギー加速器研究機構の藤井です");
  TCHAR title[] = _T("Hello Title");

  MessageBox (NULL, msg, title, MB_OK);
  return (0);
}

てな具合である(機構の構の字が問題の 0x5C を含んでいるので こういう例題にしてある)。ここで、MessageBox?関数は UNICODE が 定義されていれば WideCharacter?版が、そうでなければ SingleCharacter?版が 使われる。というわけで、UNICODE を定義して compile すれば NT、CE系の実行イメージが、そうでなければ 95系でも使えるイメージが 作られる。これを Shift_JIS で whello.c として保存したとすると、 NT、CE系の実行イメージを作るには

gcc -DUNICODE -finput-charset=CP932 -fexec-charset=UCS-2LE whello.c -mwindows

とすればよい。

MSYS

MSYS は MinGW を利用するための console 型インターフェース(shell) で UNIX 系の script などを使えるようにする最小システムとして 提供されている。 MinGW で開発したいのだが Cygwin を install するのはどうも 大げさすぎるという場合に Cygwin の代替として使うという位置づけらしい。

配布は Winodows のインストール用実行イメージで行われているので、 インストールは簡単である。MinGW より先にインストールすることが 推奨されているが、後からでも(多分)特に問題ない。ただし、 絶対に MinGW の bin と MSYS の bin を混ぜてはいけない

MSYS には gzip や tar が含まれているので、後は必要な tar-ball を 取得して展開し、インストールすればよい。MinGW に必要最低限の tar-ball は

  • mingw-runtime
  • w32api
  • binutils
  • gcc

だそうである。これらは全部 MSYS とは別のフォルダ (例えば C:\mingw とか)か MSYS 配下の mingw に インストールする。 何度も言うが、 間違っても MinGW の bin と MSYS の bin を混ぜてはいけない

MSYS 配下の mingw にインストールしない場合は /etc/fstab を作って、その中で指定しておく。 /etc/fstab の例が /etc/fstab.sample として存在しているので、 書き換えは容易である。

ここまで出来れば、MSYS の Console で hello world 程度の実行イメージは UNIX 系の通常の方法で出来る。 ただし、default で作られる実行イメージファイルは a.out ではなく、a.exe である。

Dev-C++

MinGW を利用するためのGUIを持つIntegrated Development Environment (IDE)ツール としては fileDev-C++がある。このDev-C++の フルパッケージにはMinGWやデバッガ−のGDBも含まれているらしい (2006-01-04現在:Dev-C++ 5.0 beta 9.2 (4.9.9.2)) ので、これをインストールしてみる。

日本語化について

元の Dev-C++ は日本語が問題となる。本体もフォントの設定などで文字化けを 起こす。これに対しては fileDevC++-JPプロジェクト で日本語対応パッケージを配布している。多国語対応の programming を するつもりなら、こちらの方がよいかも知れない。

ただし、筆者の場合、すでに英語版としてインストールしてしまった後だった ので、 ftp://www.cs.tohoku-gakuin.ac.jp/pub/windows/IDE/Dev-C++/How2Setup.html の方法で日本語化することにする。

Dev-C++ を使ってみて

少し使ってみたが、β版ということもあるだろうが、まともに使おうとするには ちょっと今ひとつの感がぬぐえない。特にプロジェクトへの新規作成で間違えた ファイル名を入れた後、削除しようとしてもまともにいかない。 一度 Dev-C++ を終了して手でプロジェクトファイルを編集するはめになった。 しかも、それだけではダメで、一度プロジェクトに記載されているものを 全部はずして、もう一度プロジェクトへ挿入し直さないと、正しい Makefile.win が 作られない。 また、ソースを修正した後 save せずに compile すると前の ファイルが compile される。つまり見えているものと compile されるものが 違う状態になる。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-26 (水) 16:34:04