前の質問では、組み込みデバイス環境をシミュレートする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内で実行する必要があります。