![Сборка GCC внутри chroot из исходного кода](https://rvso.com/image/23967/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0%20GCC%20%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B8%20chroot%20%D0%B8%D0%B7%20%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D0%BE%D0%B4%D0%B0.png)
В предыдущем вопросе я спрашивал о создании chroot, который имитирует мою встроенную среду устройства. Было предложено сначала собрать из исходного кода GCC и binutils внутри моего chroot. Чтобы попытаться сделать это, я скопировал версию 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 будет собран в соответствии с этой системой.