2016-05-27 13 views
0

私はコンパイラビルドのブートストラップについて理解していますが、通常のユーザーの長所と短所は分かりません。 (GCCのメンテナの価値があると仮定します)ビルドGCC:ブートストラップのメリットとデメリットは何ですか?

GCCを設定するときは、--enable-bootstrap--disable-bootstrapという2つのオプションがあります。私が理解しているように、バニラコンパイラのビルドでは、デフォルトで--enable-bootstrapが有効になっています。

--disable-bootstrapのメリットとデメリットについては何も見つかりません。私のGoogle-fuが失敗します。私は、ビルドがより速くなると思っていますが、欠点は何ですか?

明らかに、v6.1.0の公式ソースから、バニラのx86-64 Linux GCCビルドを行っています。

私はここにスクラッチ命令からのLinuxで使用されるオプション--disable-bootstrapを参照してくださいので、私は尋ねる:http://www.linuxfromscratch.org/lfs/view/development/chapter06/gcc.html

+0

一般に、オプションの機能が分からない場合は、そのオプションに触れないでください。 –

+0

インターネットからのガイドではなく、GCC開発者のJohnathan Wakelyが[GCCをインストールする](https://gcc.gnu.org/wiki/InstallingGCC)ガイドを読む必要があります。一つのこととして、 '。/ contrib/download_prerequisites'は、ほとんどのガイドでは無視されているステップです.Macを手作業でコンパイルすることはお勧めできません。 –

答えて

3

GCC configuration documentationは言う:ネイティブビルドの

--disable-bootstrap
を、デフォルトの設定では、実行することです'make'が呼び出されたときのコンパイラの3段階ブートストラップで、GCCが正しくコンパイルできることをテストします。このプロセスを無効にする場合は、--disable-bootstrapで構成できます。

--enable-bootstrap
ターゲットとホストのトリプレットが異なる場合でも、特別な場合、3段階ビルドを実行することができます。これは、ホストがターゲット用にコンパイルされたコードを実行できるときに可能です(ホストはi686-linux、ターゲットはi486-linuxです)。これを行うには、GCC 4.2以降、明示的に--enable-bootstrapを設定する必要があります。

全体としては、このデフォルトをよく控えておくことをお勧めします。あなたが--disable-bootstrapを使用している場合

、それはおそらくその可能性、(私ははまだはそれを試していませんでしたcommentExplorer09あたりが、)2段ビルドが1ステージはを構築しないんエラーチェックやパフォーマンスの損失を犠牲にして、時間とスペースを節約します。は3段階ビルドでは機能しません。

詳しくは、ドキュメントをお読みください。

+2

いいえ '--disable-bootstrap'は1段階ビルドだけです。 3段階ビルドを行う目的は、GCCが完璧にコンパイルできることを保証することです。最初の段階で "別のコンパイラでコンパイルされたGCC"が生成され、2番目の段階で "GCCでコンパイルされたGCC"が生成され、3番目の段階でステージ2と同じバイナリが生成されるかどうかがテストされます( "ステージ1と2のバイナリを破棄します)。GCCをクロスコンパイルする場合、ビルドしたばかりのバイナリは "--build"マシン上で実行されないかもしれないので、1つのステージしか実行できません。 – Explorer09

+1

@ Explorer09:情報ありがとうございます。回答が多かれ少なかれ更新されました。 –

+1

そして、私はconfigureスクリプトのための[documentation page](https://gcc.gnu.org/install/configure.html)があることを知らずにこの時間を過ごしました。うわー、悲しい。だからこそありがとう! –

関連する問題