MinGW
| 開発元 | MinGW project |
|---|---|
| 初版 | 1998年07月1日 |
| 最新版 | 4.5.0 / 2010年04月19日 |
| 対応OS | Windows |
| 種別 | 開発環境 |
| ライセンス | BSD License / GNU General Public License (GPL) / Public Domain |
| 公式サイト | MinGW Home |
MinGW(ミン・ジー・ダブリュー、Minimalist GNU for Windows)はGNU ツールチェーンのWindows移植版である。MinGWはWindows APIのためのヘッダファイルを含んでおり、フリーのコンパイラであるGCCを、Windowsアプリケーションの開発のために利用できる。
MinGWプロジェクトでは、2つの主要なパッケージを開発、配布している。Windows環境に移植されたGCCは、コマンドラインから使用することも、IDEへ統合することもできる。もう1つのMSYS(minimal system) は軽量のUNIX風シェル環境であり、端末エミュレータのrxvtと、開発ツールのautoconfを実行可能にするためのPOSIXコマンド群とが含まれている。
この2つのパッケージは、Cygwinからフォークして誕生した。CygwinではWindowsの機能性を犠牲にすることで、より機能的なUnix風環境を提供している。なお、どちらのパッケージもフリーソフトウェアで、Win32APIを利用するためのヘッダファイルはパブリックドメインで提供されており、GNUツールの移植版はGPLである。MinGWの個々のGNUツール及びMSYSは、MinGWの公式サイトより入手可能である。
目次 |
名称の由来 [編集]
MinGWの名称はMinimalist GNU for Windows(Windowsのための最小限度のGNUの意)を表す。Win32 APIの為のヘッダーを提供するのでMingw32とも呼ばれる。MinGWの規範となる発音は未だ決定されていないが、一般的には、"ming wee", "min gee double-u","ming double-u" 又は "min gnu" などのように発音されている。
特徴 [編集]
MinGWとMSYSを両方合わせても小さく、それ自身で完結可能な環境であり、リムーバブル・メディアから使用することが可能である。その際に、コンピュータ上のレジストリやファイルに影響を与えない。一方、Cygwinはより多くの機能を提供するために、インストールとその後の管理が複雑である。
さらに、MinGWはLinux上など異なるOSでのクロスコンパイルにも対応している。このため、MSYSがインストールされたWindowsを利用せずに、Windows用のアプリケーションを開発できる。
Cygwinとの比較 [編集]
MinGWはCygwin 1.3.3からフォークした。Cygwin、MinGWいずれもUnixソフトウェアのWindowsへの移植に使用されるが、異なる方針を採っている。CygwinはWindows上に、Linuxや他のUNIXシステムに見られるような、完全なPOSIX層を提供することを目標にしており、互換性のために必要であれば性能も犠牲にしている。一方でMinGWはフリーのコンパイラと各種ツールのみを提供し、性能を重視している。
アプリケーション移植の観点で見ると、MinGWはPOSIX APIを提供していない。このため、Cygwinでコンパイル可能だがMinGWでは不可能なUnixアプリケーションが存在する。具体的には、特定のPOSIXの機能を要求する、又は、POSIX環境中で実行されることを前提とするアプリケーションが当てはまる。この問題を回避しMinGWで動かすためには、SDL、wxWidgets、Qt、GTK+あるいはgnulibのようなプラットフォーム非依存のライブラリを使用してアプリケーションを作成する必要がある。そのほかの移植時の注意点として、MinGWでは、ネットワークプログラミングの read/write を、recv/send に置き換える必要がある。これは、Windowsでのsocketの実装がWinsockであり、POSIXと異なるためである。このため、単なるツールチェーンとして提供されているMinGWでは、この修正は今後とも必要である。 [1] [2]
この違いは、MinGWとcygwinで、libcライブラリ、標準Cライブラリをはじめとして、異なるライブラリを使用しているためである。MinGWでは、Microsoftから直接提供されるライブラリmsvcrt.dllを用いている。しかし、Cygwinでは、POSIX互換の為にDLL(cygwin1.dll)を独自に導入して解決している。Cygwinでは、独自ライブラリを用いているため、ランタイムライブラリのライセンスによる制限を受ける。[3]なお、MinGWでも、MSYSのライブラリ(msys-1.0.dllやmsys-z.dll)をリンクしている場合、これらのランタイムライブラリライセンスによる制限(GPL)を受ける。[4]
なお、CygwinでMinGW用プログラムの開発が可能であった。CygwinのGCC は gcc-3 まではオプション"-mno-cygwin"を渡すと、MinGWのヘッダファイルとランタイムライブラリを用いてバイナリが作成された。gcc-4 からは現在のところこのオプションは削除されている。
ライブラリの依存関係は、"objdump -p ファイル名"で見ることができる。
クロス開発環境 [編集]
MinGWのバイナリは、Linux上でも開発することができる。Linuxの場合、Wineを使ってテストを行うことが簡便である。なお、RPMファイルは、次のページから取得することができる。[5]なお、Fedoraでは、以下のSIGが立ち上がっている。[6]クロスコンパイル環境でドライバを作るための注意点などは、以下の記事も参考になる。[7]
MinGWで作成出来るアプリケーション [編集]
- git (分散バージョン管理システム)
- Windows PV driver for Xen (準仮想ドライバ)
- Source Navigator (統合開発環境・ソース解析ツール)
- Ecere SDK (C言語上位互換オブジェクト指向言語であるeC言語、統合開発環境、GUIや3Dライブラリなどを中心に構成されたクロスプラットホームのソフトウェア開発キット)
そのほか [編集]
MinGWの開発環境としては、MSYSが標準であるが、そのほかに、EclipseやDOSプロンプトで開発することもできる。
Intel Threading Building Blocksも、将来的には、MinGWでコンパイルできる見込みである。 [8]
外部リンク [編集]
- MinGW Home
- MinGW SourceForge Home
- SourceForge Project Of The Month (September 2005)
- MinGW FAQ(日本語)
- "-mno-cygwin" -- Building MinGW executables using Cygwin
- MinGW RSS