Cygwinとの比較
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/06/11 03:56 UTC 版)
「Cooperative Linux」の記事における「Cygwinとの比較」の解説
coLinux は「本物の」Linuxであるため、Linux用の通常のバイナリが利用できる。すなわち豊富な既存のLinux用ソフトウェアが利用できる。 Debian GNU/LinuxやUbuntuといった、一般のLinuxディストリビューションを、ほぼそのままcoLinux上で利用できる。 入出力のオーバーヘッドで課題の大きいCygwinと比較して高速である。
※この「Cygwinとの比較」の解説は、「Cooperative Linux」の解説の一部です。
「Cygwinとの比較」を含む「Cooperative Linux」の記事については、「Cooperative Linux」の概要を参照ください。
Cygwinとの比較
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/17 13:33 UTC 版)
MinGWはCygwin 1.3.3からフォークした。Cygwin、MinGWいずれもUNIXソフトウェアのWindowsへの移植に使用されるが、異なる方針を採っている。CygwinはWindows上に、Linuxや他のUNIXシステムに見られるような、完全なPOSIX層を提供することを目標にしており、互換性のために必要であれば性能も犠牲にしている。一方でMinGWはフリーのコンパイラと各種ツールのみを提供し、性能を重視している。 アプリケーション移植の観点で見ると、MinGWはPOSIX APIを提供していない。このため、Cygwinでコンパイル可能だがMinGWでは不可能なUNIXアプリケーションが存在する。具体的には、特定のPOSIXの機能を要求する、又は、POSIX環境中で実行されることを前提とするアプリケーションが当てはまる。この問題を回避しMinGWで動かすためには、cygwin1.dll内の関数を直接利用する方法または、eC(Ecere SDK)(英語版)、SDL、wxWidgets、Qt、GTKあるいはgnulibのようなプラットフォーム非依存のライブラリを使用してアプリケーションを作成する必要がある。そのほかの移植時の注意点として、MinGWでは、ネットワークプログラミングの read/write を、recv/send に置き換える必要がある。これは、Windowsでのsocketの実装がWinsockであり、POSIXと異なるためである。このため、単なるツールチェーンとして提供されているMinGWでは、この修正は今後とも必要である。 この違いは、MinGWとcygwinで、libcライブラリ、標準Cライブラリをはじめとして、異なるライブラリを使用しているためである。MinGWでは、マイクロソフトから直接提供されるライブラリmsvcrt.dllを用いている。しかし、Cygwinでは、POSIX互換の為にDLL (cygwin1.dll) を独自に導入して解決している。Cygwinでは、独自ライブラリを用いているため、ランタイムライブラリのライセンスによる制限を受ける。なお、MinGWでも、MSYSのライブラリ(msys-1.0.dllやmsys-z.dll)をリンクしている場合、これらのランタイムライブラリライセンスによる制限 (GPL) を受ける。 なお、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によるビルドを行うことができる。 ライブラリの依存関係は、"objdump -p ファイル名" で見ることができる。
※この「Cygwinとの比較」の解説は、「MinGW」の解説の一部です。
「Cygwinとの比較」を含む「MinGW」の記事については、「MinGW」の概要を参照ください。
- Cygwinとの比較のページへのリンク