
以前の質問で、組み込みデバイス環境をシミュレートする chroot の作成について質問しました。chroot 内で最初にソース GCC と binutils からビルドすることを提案されました。これを試して、ホスト マシン上の libc と gcc バイナリのバージョンを chroot にコピーしました。次に、簡単な hello world プログラムをファイル test.c に記述し、次のように 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 のビルド手順、このプロセスの詳細が記載されています。ネイティブ コンパイラをビルドする必要があり、すべての手順を chroot 内で実行して、そのシステムに合わせて gcc がビルドされるようにする必要があります。