57

従来、MSYS bash は Cygwin bash に劣ると考えられてきました。前者は、Autoconf スクリプトを実行するための MinGW 内部の補助ツールでした。しかし、今は MinGW-w64 と MSYS2 があります。後者にはパッケージ マネージャーのような甘い pacman と zsh のようなエレガントなシェルが付属しているため、エミュレーション レイヤーにまだギャップがあるのではないかと思います。

MinGW* アプリケーションは Windows ネイティブの実行可能ファイルですが、MSYS2 ソフトウェアには、Cygwin と同様に POSIX エミュレーション レイヤーが必要です。少なくとも一般ユーザーには、この 2 つの違いを見つけるのは困難です。

  • 2 つのエミュレーション レイヤーの機能上の違いは何ですか (ある場合)?
  • どちらのエミュレーションがより高速 (より効率的) ですか?
4

2 に答える 2

68

従来、MSYS の bash は劣っていましたが、主な理由は、MSYS がそうではなかったのに対し、Cygwin が活発に開発され続けていたためです。MSYS は Cygwin バージョン 1.3.3 からフォークされ、再同期されることはありませんでしたが、MSYS2 は定期的に Cygwin プロジェクトと再同期します。

私たちは「パッケージ マネージャーのような素敵な pacman」を持っていません。Arch Linux の pacman パッケージ マネージャーを可能な限り直接的に再コンパイルしています。

MSYS2 には cygwin.dll がありませんが、msys-2.0.dll があり、同じこと (およびその他の機能) を実行します。具体的には、パスのように見える引数と PATH env. var は、Windows ネイティブ ソフトウェアの実行時に Windows 形式に変換されます。

遅いかどうかについては、違いはほとんどないと思いますが、MSYS2 は余分な変換作業のためにわずかに遅くなります。繰り返しになりますが、Cygwin から実行するよりも、MSYS2 内からより多くの Windows ネイティブ ソフトウェア (MinGW-w64 コンパイラなど) を実行する可能性があるため、MSYS2 に有利になります。

于 2014-09-10T00:19:32.637 に答える
11

私の理解では、MSYS2 は Cygwin のフォークであり、MinGW-w64 パッケージを使用できるようにすることを主な目的としています。その目標は、利用可能なソフトウェアの総数を犠牲にして達成されます。MSYS2Cygwinの比較リスト。

本質的に、それだけです。したがって、MinGW-w64 で何かをコンパイルする必要はありませんでしたが、元の Cygwin ではなく MSYS2 を使用する理由はほとんどありません。

于 2014-09-09T20:46:08.190 に答える