ソースのchroot内でGCCを構築する

ソースのchroot内でGCCを構築する

前の質問では、組み込みデバイス環境をシミュレートするchrootを作成する方法を尋ねました。誰かがchrootのソースGCCとbinutilsで最初にビルドすることを提案しました。これを試みるために、ホストシステムのlibcとgccのバイナリバージョンをchrootにコピーしました。次に、test.cファイルに単純なhello worldプログラムを作成し、次のようにchrootにビルドしてみました。

  phil@phil-desktop:/usr$ sudo chroot /usr/embedded_chroot1/
  bash-4.2# gcc test.c 
  gcc: error trying to exec 'cc1': execvp: No such file or directory

このエラーが原因で何が起こっているのかわかりません。 gccバイナリとlibcをchrootにコピーしましたが、なぜコンパイルできないのですか?また、すべてのシステムソースファイルとヘッダファイルを私のchrootにコピーする必要がありますか? chrootを使用するプロセス全体について概念的な誤解があるようです。

答え1

gccビルドは、システムに既存のコンパイラなしで独自にブートストラップできます。できなければならないダウンロードgccを解凍し、外部から何もコピーせずにchrootでビルドします。このことをしてからかなり時間が経ちましたが、かなり痛かったと思います。

それを見てください(これgcc ビルドガイドライン、このプロセスについて詳しく説明します。システムに合わせてgccをビルドするには、デフォルトのコンパイラをビルドする必要があり、すべての手順はchroot内で実行する必要があります。

関連情報