2009-10-28 9 views
9

基本的には、Windows上でGCCを使用してC/C++をコンパイルしたいと思っています。 2つの競合するプラットフォームは、MinGWとCygwinです。それぞれには独自の恩恵と限界があります。 MinGWはWindows用にコンパイルしますが、Cygwinではcygwinの.dllが必要です。しかしMinGWにライブラリをインストールするのは難しいですが、cygwinではsetup.exeを 'パッケージマネージャー'として使用する方が簡単です。C/C++用のWindowsビルド環境を設定する最良の方法

私の質問は、Windowsでコンパイルする最良の方法です。 MinGWを使用してライブラリと闘う方が良いでしょうか(MinGWにライブラリをインストールする簡単な方法があります)。 Cygwinを使うべきですか?Cygwinの.dllを必要とせずにコンパイルするにはどうしたらいいですか。

+0

主観的な質問。互換性レイヤーをコーディングしていないので、私はmingwが好きです。ビールのような無料の環境が必要な場合、Visual StudioのExpressエディションやVC++のコマンドラインのみのバージョンなど、いくつかのオプションがあります。 – asveikau

答えて

7

ウィンドウで最も簡単にコンパイルするには、visual studio expresを使用します。これは無料。 cygwinを使用する正当な理由は、クロスプラットフォームビルドのためです。 gccを使用する正当な理由は、Microsoftコンパイラがサポートしていないコンパイラをサポートしていることです。

しかし、すべてのVC++ Expressは、Windowsのみの開発に行く方法です。

+0

Visual Studio Expressを使用している場合、サービス条件に違反することなく法的に商用アプリケーションを作成することはできません。 – Andres

+10

@Andres:これは単に偽です。 http://www.microsoft.com/express/support/faq/ –

+1

@Andresを参照してください。#Express Editionを商用で使用できますか? はい、Visual Studio Express Editionを使用して構築されたアプリケーションにはライセンス制限はありません。 –

5

MinGWのようなWindowsのライブラリに対してコンパイルするためにはCygwinで-mno-cygwinを使用するオプションはありません常にある:

gcc -mno-cygwin file.c -o test 

それは簡単な選択ではないですし、主にあなたが他のライブラリに依存しますどのくらいに依存します。 Cygwinは本当に重いが、MinGWよりもLinux環境を "エミュレート"する層を追加しています。

編集:

のQt Creatorは、あなたが(Linux上とgcc、...)は、Windows上のMinGWでコンパイルすることができますGDBよりも優しいデバッグを行いIDEを持っています。ライブラリが必要な場合でも、Qtライブラリを使用することはできます。将来の移植性のためにgccに固執したいのであれば、これはVisual Studioの良い代替ソリューションになります。

+0

-mno-cygwinフラグは、静的バイナリを作成しません。cygwin.dllにリンクされていないものを作成します.-本質的には、「裸の」win32プログラムです。実際には(異なるコンパイラバージョンからの異なるコード生成のようなモジュロのもの)、これはまさにmingwコンパイラから得られるものです。 –

+0

右、アンディを指摘してくれてありがとう、答えを編集します。 – RedGlyph

+0

@Andy:Cygwinのlibc(そしておそらく他のいくつかのストックライブラリ)はcygwin.dllに依存しませんか?私。 -mno-cygwinを実行している場合、Win32 APIのみに制限されませんか? –

0

MinGWでラップされたGCCを簡単にインストールできます(equation.com)。 「プログラミングツール」→「Fortran、C、C++」の順にクリックし、ご希望のリリースをダウンロードしてインストールして使用してください。

3

CodeBlocksをご覧ください。これは一般的にWxWidgetsアプリケーションを構築するために使用されますが、MinGWをうまくラップします。

+0

私はgcc 4.4のC++ 0xサポートでそれを再生するのに使っています。時々クラッシュするが、通常の場合は機能する。 – jmucchiello

1

Qt CreatorにはMinGWが標準で付属しており、実際にQtフレームワークを使用しないプロジェクトを構築するために使用できます。

+0

私はQing CreatorのためにMingwと一緒に行くと言っています。それは本当に良いです。 –

+0

私は既に私のポストで(リンクを除いて)言及していました;-)しかし、それはgccで開発する私の最初の選択です。すぐに4.6へのアップデートをうまくいけばよい。 – RedGlyph

0

可能な方法の1つは、CMakeを使用して、ソースからVisual Studioプロジェクトをビルドし、Visual Studioからコンパイルすることです。他のIDE用のプロジェクトも作成できるので、クロスプラットフォームに移行できます。

1

実際には、オプション#3があります:Windowsのエディションで許可されている場合は、Microsoft Services For Unix/Subsystem for Unix Applicationsをインストールして、SUACommunityからgccを取得します。パッケージマネージャもあります。これらの3つのオプションのうち、これはあなたに真のUnixシステムに最も近い動作を与えます。

ただし、結果のアプリケーションはWin32アプリケーションではありません。それらはSUAアプリケーションであり、SUAを実行する必要があります。自分でコードを書くのであれば、通常は自分でコードを書いても問題はありませんが、適切なWindowsアプリケーションを作成して配布したい場合は、Unixをエミュレートしようとするものから遠ざかることをお勧めします。

0

答えは、ライブラリを使用するのか、POSIXまたはPOSIXベースのターゲットを対象とするプログラムをコンパイルするのかによって異なります。それはCygwinが意図しているものですが、MinGWはGCCを使用してWindowsターゲットプログラムをコンパイルするためのものです。

0

別のオプションは、TDM MinGWのです:http://www.tdragon.net/recentgcc/

それは基本的に32ビットおよび64ビットのWindowsマシンで使用可能な最新のGCCコンパイラでのMinGWの非公式なフォークです。 MinGWの開発者によってさえ、それを使用しています。

式Gccはさらに優れています。

+0

これはフォークではありません。彼らはちょうど公式のミンクよりはるかに頻繁に解放する。 –

関連する問題