4.8リリース以降、C++コンパイラGCC(そのG ++部分)は、CではなくC++自体で記述されています。これについて架空の質問があります。
まだC++コンパイラがない新しいプラットフォームでGCCのC++コードをコンパイルする方法を知りたいです。もちろん、他のマシンでコンパイルされたビルド済みのバイナリを使用することもできます。または、Cで書かれた古いバージョンのGCCを使用し、それを使用して現在のバージョンをコンパイルすることもできます。
しかし、ビルド済みのバイナリと最新バージョンだけがないと、行き詰まっていましたよね?そうでない場合、GCCプロジェクトのCからC++への切り替えによって引き起こされるこの状況に他の影響がありますか?
これは実際には bootstrapping と呼ばれるよく知られた概念です。基本的に、どこかに、現在のGCCコードベースをビルドできるGCCのバージョンをビルドするための最小限のCコードベースが存在します。セルフホスティング言語は何十年もそのようなことをしてきました。
コンパイルするのと同じ言語で書かれたコンパイラを作成することは、 bootstrapping と呼ばれます。ウィキペディアの記事では、コンパイラーをブートストラップできるいくつかの方法について説明しています。
4.8以降のG ++ソースコードのみがあり、ターゲットプラットフォーム用のビルド済みのバイナリがない(既存のC++コンパイラはない)という制限がある場合、G ++コンパイラのブートストラップは クロスコンパイル 。
クロスコンパイルを使用してコンパイラをブートストラップするとき、コンパイラのいくつかのバージョンをビルドします
最初のステップを実行するPC(または同様の)もない場合、実際には行き詰まっていますが、そのような状況にあり、bootstrapコンパイラーを試みる可能性があります。無視できる。