1. ホーム
  2. c

[解決済み] MinGWとは何か、わかりやすく解説します。

2022-03-07 09:33:45

質問

私は熱心なPythonユーザーですが、いくつかのライブラリをコンパイルするために、WindowsマシンにMinGWをインストールする必要があるようです。私は、MinGWとGCCについて少し混乱しています。以下は、私の質問です(本当のダミーの観点から)。

Pythonはインタプリタとコンパイルの両方を行う言語なんですね。LinuxやWindowsにはPythonの実装があり、これをインストールし、バイナリを使用してコードを実行することができます。Pythonにはたくさんのビルトイン・ライブラリが同梱されているので、それを使うことができます。私が読んだ限りでは、Rubyも同じです。

さて、私はC言語をほんの少しかじったことがあるのですが、コンパイルする必要があることは知っています。C言語にはヘッダーファイルと呼ばれる組み込みのライブラリがあり、それを使用することができます。さて、学生時代のCは、Turbo-CというVi-like IDEでコードを書き、F9を押してコンパイルしていました。私のC言語教育はそこでほぼ終了です。

MinGWとは何か、GCCとは何か。私はこれまで主にWindows系で仕事をしてきて、最近Cygwinも使うようになりました。同じものではないのですか?

このあたりに当たる簡単な解説があると助かります。

(この投稿が馬鹿馬鹿しく聞こえたら申し訳ありません。ここで聞いてみようと思ったのです。これらのコアビットを無視することは、誰もより良いプログラマーになることはありません)

皆さん、ありがとうございます。

解決方法は?

MinGWはWindowsプラットフォーム用の完全なGCCツールチェーン(C、C++、Ada、Goなどの半ダースのフロントエンドを含む)で、msvcrt.dllのWindows OSコンポーネントCランタイムライブラリ用にコンパイルしリンクするものです。むしろ、それは 最小限の (という名前になっています)。

つまり、Cygwinとは異なり、MinGWは はしません。 Windowsの上に完全なPOSIXレイヤーを提供しようとする一方で、特別な互換性ライブラリとリンクする必要はありません。
そのため はありません。 は、あなたが書いたプログラムにGPLライセンスの影響を与えることはありません(注目すべき例外はプロファイリングライブラリですが、通常あなたはそれらを配布しないでしょうから、それは問題ではありません)。

新しい MinGW-w64 には、x64 サポートと実験的な ARM 実装を含む、およそ 99% 完全な Windows API バインディング (ATL などは除く) が付属しています。時折、未定義のエキゾチックな定数が見つかるかもしれませんが、99%の人が99%の時間使うものについては、完全にうまく動作します。

また、POSIXにあるもののうち、Windowsで何らかの形で実装されているものであれば、その大部分を利用することができます。MinGWで動作しないPOSIXの主要なものは、以下の通りです。 fork Windowsにはそれがない(Cygwinはそれを実装するのに大変な苦労をしている)ためです。
その他にも細かい点はいくつかありますが、全体としては、とにかくほとんどのことがなんとなくうまくいくようになっています。

つまり、とてもとても簡略化した文章で言うと MinGW(-w64)は、CやC++だけでなく、他の言語でもWindows用のネイティブバイナリ実行ファイルを書くことができる、quot;no-frills compiler thingie"なのです。