Linux From ScratchでクロスコンパイルにCanadian Crossを使用するのはなぜですか?

Linux From ScratchでクロスコンパイルにCanadian Crossを使用するのはなぜですか?

私は苦しんでいます最初からLinux 11.0本。存在する三。 LFSクロスツールチェーンとステージングツールの構築、ii。ツールチェーン技術の説明、カナダのクロスコンパイルについて少し説明します。最終結果を得るためになぜ3段階と3台の機械が必要なのか理解できません。テキストコンピュータAとAで実行され、Aのバイナリを生成するコンパイラで始まるとします。それでは、Cで実行され、C用のバイナリを構築するコンパイラを構築するためにそのコンパイラを使用するのはどうでしょうか?まず、Aで実行されますが、B用にビルドされたコンパイラをビルドし、Bで実行されますが、C用にビルドされたコンパイラをビルドし、最後にCで実行され、C用にビルドされたコンパイラをビルドするなど、多くの困難を経験する理由とは何ですか?

Wikipediaでもこれに関する記事を見つけました。https://en.wikipedia.org/wiki/Cross_compiler

ベストアンサー1

説明されたシーンはこんな感じです

  • マシンAは遅く、コンパイラがあります。
  • マシンBは高速ですが、コンパイラはありません。
  • マシンCはターゲットですが遅く、コンパイラはありません。

AからCのすべてのバイナリを構築できますが、マシンAが遅いので時間がかかります。

著者は、AからBのコンパイラをクロスコンパイルするのに少し時間を費やすことが価値があると信じています。その後、高速システムBを使用して、低速システムCに必要なすべてのバイナリをクロスコンパイルすることで、AまたはCでのコンパイルを防ぐことで、全体の時間を短縮できます。

最後のステップは、CベースのC用コンパイラを構築し、システムBへの依存関係を排除することです。速度は非常に遅いですが、Machine Cは時々プログラム自体を直接コンパイルすることができます。

おすすめ記事