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

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

以前の質問で、組み込みデバイス環境をシミュレートする 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 がビルドされるようにする必要があります。

関連情報