web-dev-qa-db-ja.com

Cygwinとは何ですか?

それについて検索した後、私はいくつかの情報を見つけました(まだ私にとって混乱しています)

Cygwinは、Microsoft Windows用のUnixライクな環境およびコマンドラインインターフェイスです。

ウィキペディアで上記の行を見つけましたが、それはどういう意味ですか? MinGWとcygwinとmsysについて明確なアイデアがわかりません。助けてください

15
Ario

それは人々を混乱させ続けるので:

  1. Cygwin:OSとして考えてください。 Windows上に構築されたPOSIX Cランタイムを提供するため、ほとんどのUnixソフトウェアをコンパイルして実行できます。これはGCCに付属しており、ある程度は、Cygwin内からWin32 APIを呼び出すことができますが、これが発生するか、またはまったく機能するかどうかはわかりません。

  2. MSYS(2):Cygwinのフォークであり、ネイティブWindowsプログラムをうまく動作させるパス変換マジックを備えています。その主な目的は、autotools構成スクリプトを実行できるようにシェルを提供することです。 MSYSアプリケーションを構築するためのものではありません。 MSYS2はもっと多くのことを目指しており、本格的なパッケージ管理システムが含まれているため、MinGW-w64ライブラリとツールを簡単にインストールできます。

  3. MinGW(-w64):Win32 APIヘッダーとライブラリを含む、GCCコンパイラのネイティブWindowsポート。小さなPOSIX互換性レイヤーが含まれています(たとえば、winpthreads、unistd.hヘッダー、その他のビットを介して)。ただし、これを使用してPOSIXソフトウェアをコンパイルすることはできません。これは、Win32 APIを使用してネイティブコードを生成するMSVCと比較して最適です。

Cygwinで実行されるMinGW-w64クロスコンパイラーがあることに注意してください。 MSYS2では、率直に言ってそれを行う理由はわかりません。 Cygwinを使用する場合は、LinuxでVMを実行することもできます。

14
rubenvb

その多かれ少なかれ ウェブページ

cygwinは

  1. windows API上のPOSIX互換レイヤー。これは主にcygwin1.dllにカプセル化されています
  2. このdllでコンパイルされたオープンソースソフトウェアの配布システムとリポジトリ。

一言で言えば、もしあなたがLinuxソースを持っているなら、あなたはcygwinのために再コンパイルして、それをWindows上で実行できるようにすることができます...

これにより、多くの一般的なUNIXコマンド(シェル、gcc/g ++、find ....)にアクセスできるようになります。

代替案は次のとおりです。

  • MSYS:Windowsに実装されている典型的なUNIXコマンドのセットです。
  • mingw:win32プログラムを生成できるgcc/g ++ターゲット(cygwin gcc/g ++プログラムは、mingwプログラムにはないcygwin1.dllに依存することに注意してください)。
3
jsantander