Я знаю, что этот запрос немного устарел, но мне есть что добавить к ответам: разъяснение значения слова «бутстрап».
Основной причиной многоэтапной сборки является удаление всех остатков программ/конфигураций/библиотек хоста сборки из полученного программного обеспечения. Недостаточно скомпилировать свежее программное обеспечение. Вы также должны избегать любых ссылок на библиотеки хоста, интерфейсы ядра хоста (заголовки ядра), версии pkg хоста и все другие подобные зависимости от хост-системы.
Предположим, вы оказались мазохистом и захотели собрать Debian 4 на Fedora 27 (это должно быть возможным). Простое создание программного обеспечения потребовало бы ссылок на библиотеки 27 и другие вещи. И ваша результирующая система не будет работать, потому что эти вещи недоступны при установке окончательной системы.
LFS несколько упрощает процесс, создавая простые x86-to-x86 binutils и кросс-инструменты gcc на этапе 1, затем устанавливая заголовки для ядра, которое будет использоваться в окончательной системе, а затем glibc. Этап 2 (binutils и gcc) строится с использованием кросс-инструментов, что гарантирует, что программы/библиотеки/конфигурации хоста вообще не используются. Остальная часть цепочки инструментов (я называю ее этапом 3) создается с использованием инструментов этапа 2. Теперь можно построить последний этап (с небольшими изменениями) с гарантией того, что никакая часть узла сборки не будет использоваться или использоваться. , и что никакая часть цепочки инструментов не будет упоминаться или использоваться. Последний этап создается с использованием пути, похожего на PATH=/bin:/usr/bin:/tools/bin; таким образом, когда будут созданы окончательные инструменты, они будут использоваться вместо инструментов в цепочке инструментов.
Создание цепочки инструментов не для нетерпеливых. Мне потребовались месяцы, чтобы обновить систему сборки Smoothwall Express и используемые пакеты, потому что создание цепочки инструментов сопряжено с риском. Я сражался со многими драконами, балроками и гномами. Я часто ссылался на LFS, чтобы понять, как они это делают. В результате получается автоматизированная система сборки с повторным входом, которая создает весь дистрибутив без ссылок на хост-систему. В основном я строю его на Debian 8, но известно, что он строится на Gentoo, и предполагается, что он может строить сам на себе.
person
Fest3er
schedule
28.11.2017
Slightly adjusting the name of the working platform, by changing the "vendor" field target triplet by way of the LFS_TGT variable, ensures that the first build of Binutils and GCC produces a compatible cross-linker and cross-compiler. Instead of producing binaries for another architecture, the cross-linker and cross-compiler will produce binaries compatible with the current hardware.
Это не объясняетtwo passes
gcc или binutils - person Monku   schedule 06.10.2016