
В предыдущем вопросе я спрашивал о создании 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 будет собран в соответствии с этой системой.