4

私は現在、gccで使用するためのmakefilesで提供されるオープンソース最適化ライブラリ(ネイティブC ++)をコンパイルしています。私はWindowsユーザーなので、これをコンパイルする2つのオプション、MinGW / Cygwinでgccを使用する方法、またはVisualStudioプロジェクトを手動でビルドしてソースをコンパイルする方法に興味があります。

1)MinGW / Cygwin + gccを使用してコンパイルした場合、結果の.lib(静的ライブラリ)にはMinGW / Cygwinのライブラリが必要ですか?つまり、コンパイルした.libをMinGW /CygwinがないWindowsPCに配布できますか?それでも実行できますか?

2)コンパイラ自体のパフォーマンスの違い以外に、MinGW / Cygwinとgccを使用してコンパイルするときに関連するオーバーヘッドがありますか?エミュレーションレイヤーはライブラリにコンパイルされますか、またはgccはネイティブWindowsライブラリを構築しますか?

3)速度がライブラリの私の主な目的である場合、使用するのに最適な方法はどれですか?これは非常にオープンエンドであり、自分のベンチマークを実行するのが最善かもしれませんが、誰かがここで経験を積んでいれば、これは素晴らしいことです。

4

1 に答える 1

5

Cygwinの要点はLinuxエミュレーションレイヤーであり、デフォルトでは(つまり、クロスコンパイルしない場合)、バイナリcygwin1.dllを実行する必要があります。

これは、MSVCからのものと同じように「ネイティブ」としてバイナリを作成するMinGWには当てはまりません。ただし、MinGWには、特に独自のランタイムライブラリのセットが付属していますlibstdc++-6.dll。このライブラリは、を使用して静的にリンクすることもできます。-static-libstdc++その場合は、おそらく。を使用してコンパイルすることもできます-static-libgcc

これは、異なるコンパイラのC ++ライブラリを自由に混在させることができるという意味ではありません(mingw.orgのこのページを参照してください)。ライブラリへのインターフェイスに制限したくない場合はextern "C"、ほとんどの場合、単一のコンパイラを選択してそれを使用する必要があります。

パフォーマンスの懸念について:Cygwinを使用すると、実際にOSと対話するときに(マイナー?)ペナルティが発生するだけです。生の計算が関係する場合、オプティマイザーの品質のみが重要です。

于 2011-07-23T08:59:05.120 に答える