削除された内容 追加された内容
m編集の要約なし
推敲
14行目:
}}
 
'''MinGW'''(ミン・ジー・ダブリュー、'''Min'''imalist '''G'''NU for '''W'''indows)は[[GNU]][[GNUツールチェーン]]、[[GNUコンパイラコレクション|ツールチェーンGCC]][[Microsoft Windows|Windows]]移植版で利用できるようにする開発環境である。MinGWは[[Windows API]]のための[[ヘッダファイル]]を含んでおり、[[フリーソフトウェア|フリー]]の[[コンパイラ]]GCCある[[GNUコンパラコレクション|GCC]]を、<!-- which do not rely on the presence of a [[runtime]] emulating [[Unix-like]] functionality like programs compiled with the [[Cygwin]] port -- -- Cygwin移植版を用いてコンパイルされたプログラムのように[[UNIX]]風APIをエミュレートするランタイムに依存しない、 -- -- 訳注:収まりが悪いので取る -->ティブWindowsアプリケーションの開発のために利用できる。
 
MinGWプロジェクト[[32ビット]]環境向けに主に2つの主要なパッケージを開発、配布している。ひとつはWindows環境に移植されたGCC、[[Cmd.exe|コマンドライン]]から使用することも、[[統合開発環境|IDE]]へ統合することもから利用できる。もう1つは軽量UNIX風シェル環境である[[MSYS]] (''minimal system'') は軽量のUNIX風シェル環境であり、る。[[端末エミュレータ]]の[[rxvt]]と開発ツールの[[Autotools|autoconf]]を実行可能にするための[[POSIX]]コマンド群とが含まれている。これらは[[Cygwin]]をフォークして誕生した
 
この2つのパッケージは、[[Cygwin]]からフォークして誕生した。CygwinではWindowsの機能性を犠牲にすることで、より機能的なUNIX風環境を提供している。なお、どちらのパッケージも[[フリーソフトウェア]]で、Win32APIWin32 APIを利用するためのヘッダファイルは[[パブリックドメイン]]で提供されており、いる。GNUツールの移植版は[[GNU General Public License|GPLライセンス]]である。MinGWの個々のGNUツール及びMSYSこれらMinGWの公式サイトより入手可能である。
 
また、派生プロジェクトとして{{仮リンク|Mingw-w64|en|Mingw-w64}}が存在する。
 
== 名称の由来 ==
MinGWの名称は''Minimalist [[GNU]] for Windows''(Windowsのための最小限度のGNUの意)GNU)を表す。''Win32'' APIのためのヘッダーを提供するので''Mingw32''とも呼ばれる。''MinGW''の規範となる発音は未だ決定されていないが一般的には、"''ming wee''", "''min gee double-u''", "''ming double-u''" または "''min gnu''" などのように発音されている。
 
== 特徴 ==
MinGWと[[MSYS]]者を合わせても小さく、そ軽量である。こらは自身で完結可能な環境であるため、リムーバブル・メディアから使用すること可能である。その際に、コンピュータの[[レジストリ]]やファイルに影響を与えない。一方、Cygwinはより多くの機能を提供するためにインストールが必要であり、その後の管理複雑である。
 
さらに、MinGWは[[Linux]]など異なる非Windows [[オペレーティングシステム|OS]]での[[クロスコンパイル]]にも対応している。このためおりMSYSがインストールされたWindows OSを利用せずにWindows用の アプリケーションを開発できる。
 
== Cygwinとの比較 ==
MinGWはCygwin 1.3.3から[[フォーク (ソフトウェア開発)|フォーク]]した。Cygwin、MinGW両者はいずれもUNIXソフトウェアWindowsへ移植することを目的使用されるが、異なる方針を採っている。CygwinはWindows上に、Linuxや他のUNIXシステムに見られるような、完全なPOSIX層を提供することを目標にしており、互換性のために必要であれば性能も犠牲にしている。一方でMinGWはフリーのコンパイラと各種ツールのみを提供し、性能を重視している。
 
アプリケーション移植CygwinはWindows上に完全なPOSIX層を提供することを目標にしており、互換性観点ために必要あれば性能も犠牲にしてい。その一方で、MinGWはコンパイラ各種ツールのみを提供し性能を重視している。換言するとMinGWはPOSIX APIを提供していない。このため、Cygwinでコンパイル可能だがMinGWでは不可能なUNIXアプリケーションが存在する。具体的には特定のPOSIXの機能を要求する、又は、POSIX環境中で実行されることを前提とするアプリケーションが当てはまである。この問題を回避しMinGWで動かためには、cygwin1.dllの関数を直接利用する方法または{{仮リンク|eC(Ecere SDK)|en|eC_(programming_language)}}、[[SDL]]、[[wxWidgets]]、[[Qt]]、[[GTK (ツールキット)|GTK]]あるいは[[gnulib]]のようなプラットフォーム非依存のライブラリを使用してアプリケーションを作成する必要方法がある。そのほかの移植時の注意点として、MinGWでは、ネットワークプログラミングの read/write を、recv/send に置き換える必要がある。これは、Windowsでのsocketの実装が[[Winsock]]であり、POSIXと異なるためである。このため、単なるツールチェーンとして提供されているMinGWでは、この修正は今後とも必要である<ref>[http://msdn2.microsoft.com/en-us/library/ms741394.aspx Winsock Functions (Windows)] Microsoft Developer Network</ref><ref>[http://sourceforge.net/mailarchive/forum.php?thread_name=c9b6d9a50803190317v104f46bcxde295e0b782c4a4e%40mail.gmail.com&forum_name=mingw-users <nowiki>[Mingw-users]</nowiki> about fprintf stderr support on mingw] MinGW - Minimalist GNU for Windows / Mailing Lists</ref>
 
この違いは、MinGWとcygwinで、libcライブラリ、Cygwinは[[標準Cライブラリ]]をはじめとして異なるライブラリを使用しているためである。MinGWで前者[[マイクロソフト]]から直接提供されるライブラリであるmsvcrt.dllを用いている。しかしCygwinで後者POSIX互換の為に独自の[[ダイナミックリンクライブラリ|DLL]] (cygwin1.dll) を独自に導入して解決し用いている。Cygwinでコンパイルしたプログラムを配布する場合利用者はこの独自ライブラリを用いているため、ランタイムライブラリの)も必要となる。これはソフトウェアと共に配布できるが、ソフトウェアはオープンソースライセンスに準拠す制限を受け必要がある<ref>[http://cygwin.com/licensing.html Cygwin Licensing Terms]</ref>。なお、MinGWでも、MSYSのライブラリ(msys-1.0.dllやmsys-z.dll)をリンクしている場合、これら同様ランタイムライブラリライセンスによる制限 (GPL) を受ける<ref>[http://www.mingw.org/wiki/FAQ FAQ | MinGW]</ref>。
 
その他移植時の注意として、MinGWではネットワークプログラミングの read/write をrecv/send に置き換える必要がある。これはWindowsのsocketが[[Winsock]]であり、POSIXと異なるためである。単なるツールチェーンであるMinGWでは、この置き換えは今後も必須である<ref>[http://msdn2.microsoft.com/en-us/library/ms741394.aspx Winsock Functions (Windows)] Microsoft Developer Network</ref><ref>[http://sourceforge.net/mailarchive/forum.php?thread_name=c9b6d9a50803190317v104f46bcxde295e0b782c4a4e%40mail.gmail.com&forum_name=mingw-users <nowiki>[Mingw-users] about fprintf stderr support on mingw</nowiki>] MinGW - Minimalist GNU for Windows / Mailing Lists</ref>。
なお、CygwinでMinGW用プログラムの開発が可能であった。CygwinのGCCは gcc-3 まではオプション "-mno-cygwin" を渡すと、MinGWのヘッダファイルとランタイムライブラリを用いてバイナリが作成された。gcc-4からは現在のところこのオプションは削除されている。
その代わりとしてCygwin用のGCCとは別にMinGW用のGCCがクロス開発用のコンパイラの一つとして提供されるようになった。2020年4月現在のCygwin(64ビット版)収録パッケージでは、gcc-coreがCygwin用、mingw64-x86_64-gcc-coreがMinGW用である(正確には派生プロジェクトMingw-w64である)。Cygwin用GCCが /usr/bin/gcc.exe であるのに対して、MinGW用GCCは /usr/bin/x86_64-w64-mingw32-gcc.exe のようにコマンド名のプレフィックスとして"x86_64-w64-mingw32-" が付く。その他の付随するツールチェイン(cppやldなど)も同様である。Autotoolsによる configure && make を行う際は、configure に --host=x86_64-w64-mingw32 オプションを与えることでMingw-w64によるビルドを行うことができる。
 
なお、CygwinでMinGW用プログラムの開発が可能であった。CygwinのGCCは gcc-3 までオプション "-mno-cygwin" があり、これを渡すとMinGWのヘッダファイルとランタイムライブラリを用いてバイナリが作成された。gcc-4からは現在のところこのオプション削除されている。代替として、Cygwin用のGCCとは別にMinGW用のGCCがクロス開発用のコンパイラとして提供されるようになった。2020年4月現在のCygwin(64ビット版)では、gcc-coreがCygwin用、mingw64-x86_64-gcc-coreがMinGW用である(正確には派生プロジェクトのMingw-w64)
ライブラリの依存関係は、"objdump -p ファイル名" で見ることができる。
 
その代わりとしてCygwin用のGCCとは別にMinGW用のGCCがクロス開発用のコンパイラの一つとして提供されるようになった。2020年4月現在のCygwin(64ビット版)収録パッケージでは、gcc-coreがCygwin用、mingw64-x86_64-gcc-coreがMinGW用である(正確には派生プロジェクトMingw-w64である)。Cygwin用GCCが /usr/bin/gcc.exe であるのに対して、MinGW用GCCは /usr/bin/x86_64-w64-mingw32-gcc.exe のようにコマンド名のプレフィックスとして"x86_64-w64-mingw32-" が付く。その他の付随するツールチェイン(cppやldなど)も同様である。Autotoolsによる configure && make を行う際は、configure に --host=x86_64-w64-mingw32 オプションを与えることでMingw-w64によるビルドを行うことができる。
 
ライブラリの依存関係は"objdump -p ファイル名" で見ることができる。
 
== クロス開発環境 ==
MinGWのバイナリはLinux上でも開発することができる。Linuxの場合、[[Wine]]を使ってテストを行うことが簡便である。なお、[[RPM (ファイルフォーマット)|RPMファイル]]は次のページから取得することができる[http://mirzam.it.vu.nl/mingw/]なお、[[Fedora]]では以下のSIGが立ち上がっている[https://fedoraproject.org/wiki/SIGs/MinGW]クロスコンパイル環境でドライバを作るための注意点などは、以下の記事も参考になる[http://strdup.livejournal.com/34596.html]
 
== MinGWで作成出来るアプリケーション ==
52 ⟶ 55行目:
 
== 64ビット向け開発環境 ==
MinGWプロジェクトでは[[64ビット]]環境向けのコンパイラセットは提供されていない。mingw.org から2007年にフォークしたMingw-w64<ref>[https://mingw-w64.org/ Mingw-w64 - GCC for Windows 64 & 32 bits]</ref>とMinGWプロジェクトのMSYSを組み合わせれば構築できる
 
64ビット向け開発環境は、mingw.org から2007年にフォークしたMingw-w64<ref>[https://mingw-w64.org/ Mingw-w64 - GCC for Windows 64 & 32 bits]</ref>と、MinGWプロジェクトのMSYSを組み合わせれば構築できる。
 
== そのほか ==
MinGWの開発環境としてはMSYSが標準であるが、そのほか[[Eclipse (統合開発環境)|Eclipse]]や[[DOSプロンプト]]、[[CLion(統合開発環境)|CLion]]で開発することもできる。
 
[[Intel Threading Building Blocks]]も、将来的にはMinGWでコンパイルできる見込みである<ref>[http://softwarecommunity.intel.com/isn/Community/en-US/forums/thread/30250439.aspx]</ref>。
 
== 関連項目 ==
66 ⟶ 67行目:
* [[TDM-GCC]]
* [[Interix]]
* [[Microsoft Windows Services for UNIX]](SFU),
* Subsystem for UNIX-based Applications(SUA)
 
== 出典 ==