WindowsでのMingwのDIYビルド

ネットワーク上のmingwアセンブリとその下のGNUユーティリティの多くの説明があります。 また、最初にロシア語で書かれているので、自分のバージョンを書くことも決めました。 次に、最新の安定したソースが使用されます(2011年1月27日現在)。 第三に、 グラファイトループの最適化が追加されます。 4番目では、1つまたは別のソース構成オプションを選択する理由について説明します。 第五に、忘れないでください。





mingwを自分で構築する理由







誰もが自分の集会の理由を見つけることができます。



何が必要ですか?





奇妙なことに、Mingwをビルドするには、Mingw自体が必要です。 同志たちは、必要なパッケージをダウンロードしてインストールするきちんとしたインストールプログラムを試み、作成しました。 公式ウェブサイトにあります。

mingw自体に加えて、インストール中に「C ++ Compiler」と「MinGW Developer ToolKit」を選択します。 C:\ MinGWに入れます。



ソースをダウンロード:



必要に応じて:





忍耐、忍耐、幸運なくしてはいけません!



組立





最速のハードドライブに作業フォルダーC:\ mbuildを作成します。 C:\ mbuild \ distribにすべてのソースを追加します。 C:\ mbuild \ releaseでmingwを成長させます。 ダウンロードしたmsysを実行します...

cd / c / mbuild




小さな発言。 ほとんどの指示では、gmp、mpfr、mpcのソースをフォルダーに入れてgccに保存するように指示しています。これらは自動的に収集されます。 gccをCLooPに固定するため、これは行いません。これはgmpに依存します。 つまり、gcc構成を開始する前にgmpをビルドする必要があります。



GMP



tar -xjf distrib / gmp-5.0.1.tar.bz2 && cd gmp-5.0.1

mkdirビルド&& cdビルド

../configure --prefix = '/ c / mbuild / release' --enable-cxx --disable-static --enable-shared CPPFLAGS = '-fexceptions'&> config.my.log

make -j4&> make.my.log

make install&> install.my.log







「-s -O2 -mtune = i686」などの最適化キーCFLAGS、CXXFLAGS、およびLDFLAGSを使用しないことが非常に重要です。このため、pplがgmpを見つけられない場合がありました。



Ppl



tar -xjf ../../distrib/ppl-0.11.tar.bz2 && cd ppl-0.11

mkdirビルド&& cdビルド

../configure --prefix = '/ c / mbuild / release' --disable-static --enable-shared --disable-nls --enable-threads --disable-debugging --with-gmp-prefix = / c / mbuild / release --with-cflags = '-s -O2' --with-cxxflags = '-s -O2'&> config.my.log

make -j4&> make.my.log

make install&> install.my.log





設定中に、conftestプログラムが起動しなかったことがウィンドウに表示される場合があります。 パニックにならないでください-これはconfigureスクリプトの結果です。



CLooG / PPL



tar -zxf ../distrib/clog-ppl-0.15.10.tar.gz

cd cloog-ppl-0.15.10

mkdirビルド&& cdビルド

../configure --prefix = '/ c / mbuild / release' --disable-static --enable-shared --with-ppl = / c / mbuild / release --with-gmp = / c / mbuild / release CFLAGS = '-s -O2' CPPFLAGS = '-s -O2'&> config.my.log

make&> make.my.log



構成スクリプトには不愉快な部分があります。 何らかの理由で、それらは単に存在しません。 make.my.logログは、m4フォルダーが欠落していることを報告します。 私は彼女の不在の理由を理解していません。 ppl-0.11からコピーするだけです。 幸いなことに、必要なスクリプトがあります。

make&> make.my.log

make install&> install.my.log



オプションは、前の説明から明らかです。



MPFR



tar -xjf distrib / mpfr-3.0.0.tar.bz2 && cd mpfr-3.0.0

mkdirビルド&& cdビルド

../configure --prefix = '/ c / mbuild / release' --disable-static --enable-shared --enable-thread-safe --with-gmp = / c / mbuild / release CFLAGS = '-s -O2 'CPPFLAGS ='-s -O2 '&> config.my.log

make -j4&> make.my.log

make install&> install.my.log





MPC



tar -xzf distrib / mpc-0.8.2.tar.gz

cd mpc-0.8.2

mkdirビルド&& cdビルド

../configure --prefix = / c / mbuild / release --disable-static --enable-shared --with-gmp = / c / mbuild / release --with-mpfr = / c / mbuild / release CFLAGS = '-s -O2' CPPFLAGS = '-s -O2'&> config.my.log

make -j4&> make.my.log

make install&> install.my.log





リビコン



tar -xzf distrib / libiconv-1.13.1.tar.gz && cd libiconv-1.13.1

mkdirビルド&& cdビルド

../configure --prefix = / c / mbuild / release --enable-shared --disable-static --disable-nls CFLAGS = '-s -O2 -mno-cygwin' CPPFLAGS = '-s -O2 -mno -cygwin '&> confgi.my.log

make -j4&> make.my.log

make install&> install.my.log



一般に、libiconvはオプションですが、そのサポートを有効にすることが望ましいです(このmingwで他のgnuユーティリティをビルドする場合に非常に便利です)。





Binutils



tar -xjf distrib / binutils-2.21.tar.bz2 && cd binutils-2.21

mkdirビルド&& cdビルド

../configure --prefix = / c / mbuild / release --disable-nls --enable-threads --with-gmp = / c / mbuild / release --with-mpc = / c / mbuild / release- with-mpfr = / c / mbuild / release --with-ppl = / c / mbuild / release --disable-ppl-version-check --with-cloog = / c / mbuild / release --disable-cloog-version -check CFLAGS = '-s -O2' CPPFLAGS = '-s -O2'&> config.my.log

make -j4&> make.my.log

make install&> install.my.log





含む



C:\ mbuild \ distrib \ w32api-3.14-mingw32-src.tar.lzmaをC:\ mbuild \ w32apiに解凍します。 アセンブリ中にmingwrtがそれを見つけることができるのはw32apiです。

tar -xzf distrib / mingwrt-3.18-mingw32-src.tar.gz

cp -r w32api / include / c / mbuid / release

cp -r mingwrt-3.18-mingw32 / include / c / mbuild / release



構成中にすべてのdllを正しく検索するには、PATHにリリースへのパスを追加します

export PATH = $ PATH:/ c / mbuild / release




Gcc



tar -xjf gcc-4.5.2.tar.bz2

cd gcc-4.5.2

mkdirビルド&& cdビルド

../configure --prefix = / c / mbuild / release --enable-shared = libstdc ++ --enable-threads --enable-version-specific-runtime-libs --enable-languages = c、c ++ --with- dwarf2 --disable-sjlj-exceptions --disable-win32-registry --disable-werror --disable-nls --disable-multilib --with-gmp = / c / mbuild / release --with-ppl = / c / mbuild / release --disable-ppl-version-check --with-cloog = / c / mbuild / release --disable-cloog-version-check --with-mpfr = / c / mbuild / release --with- mpc = / c / mbuild / release --enable-libgomp --with-libiconv-prefix = / c / mbuild / release --enable-libstdcxx-debug --enable-cxx-flags = '-s -O2'- with-boot-ldflags = '-s'&> config.my.log

make -j4 BOOT_CFLAGS = '-s -O2' BOOT_CPPFLAGS = '-s -O2'&> make.my.log



最も長く最も責任のある部分。 私は完全なソースコードを使用します

gcc、およびlibgompとzlibを含めるように、gcc-coreとgcc-c ++を個別にではなく、

それらはgcc-coreの一部としては行きません。



残念ながら、--enable-libstdcxx-debugキーで接続したバージョンだけでなく、メインのデバッグ情報も収集されます。 gccビルドオプションではこれを克服できませんでした。 したがって、次のオプションを提案します。

cd i686-pc-mingw / libstdc ++-v3

make -j4 CFLAGS = '-s -O2' CXXFLAGS = '-s -O2'&> make.my.log



ここで少しcheしました。 実際には(クロスコンパイラをビルドする場合を含む)、最初にmake all-gccを使用してgccをビルドし、次にランタイムを実行してから、すべてのgccのアセンブリを完了する必要があります。 プロセスは、たとえばここで説明されています 。 しかし、この特定のケースではすべてがそのように機能するため、気にしません。

cd ../../

make install&> install.my.log



残念ながら、プロファイリング(profiledbootstrapの作成)を使用してmingwの下でgccをコンパイルすることはできませんでした-プロセスはエラーで終了しました。 最も一般的なセグメンテーションフォールトコンパイラ。 なんと残念なことでしょう...彼らは、コンパイル速度の増加は〜7%だと言います。



ランタイムとW32API



w32apiは、新しいgccを使用して構築する必要があります。 これを行うには、fstabファイル(デフォルトC:\ MinGW \ msys \ 1.0 \ etc \ fstab)で、C:\ MinGWをC:\ mbuild \ releaseに変更し、新しいmsysを実行します。 このmsysインスタンスは、新しくコンパイルされたgccを使用します。 しかし、まだ依存関係を取り除いていないので、古いmingwのdllを探す場所をmsysに指示する必要があります。

export PATH = $ PATH:/ c / MinGW / bin




W32api



cd ../../w32api

mkdirビルド&& cdビルド

../configure --prefix = / c / mbuild / release CFLAGS = '-s -O2' CPPFLAGS = '-s -O2'&> config.my.log

make&> make.my.log

make install&> install.my.log





ミンウォート



tar -xzf distrib / mingwrt-3.18-mingw32-src.tar.gz && cd mingwrt-3.18-mingw32-src

mkdirビルド&& cdビルド

../configure --prefix = / c / mbuild / release CFLAGS = '-s -O2' CPPFLAGS = '-s -O2'&> config.my.log

make&> make.my.log

make install&> install.my.log





gmpはgccによって作成されていないため、ほとんどの場合libstdc ++。Dllおよびlibgcc_s_dw2-1.dllに依存しています。 最初はネイティブgccで組み立てられ、2番目は古いmingwからコピーする必要があります。 または、新しいgccでgmpを再構築して、依存関係を取り除くことができます。

サイズを小さくするために、不要なフォルダを安全に削除できます。 たとえば、共有/ドキュメント。



ほとんどすべて。 快適な作業のために、makeをビルドする必要があります。



作る



tar -xjf distrib / make-3.82.tar.bz2 && cd make-3.82

./configure --disable-nls --with-libiconv-prefix = '/ mingw' CFLAGS = '-s -O2' CPPFLAGS = '-s -O2'&> config.my.log

make -j4&> make.my.log

cp make.exe /c/mbuild/release/bin/mingw32-make.exe





今すべて。 パパC:\ mbuild \ releaseはきちんとしたmingwを得ました。 パッケージをテイストに追加し、きちんとしたスクリプトでラップして、 nuwen mingwのようなものを取得します。 素敵なビルドを!



追記:ダウンロードしたmingwパッケージには次のものも含まれています。




All Articles