Мучался три дня, зашел в тупик (кончились идеи). Очень много позаимствовано из CLFS, но у них немного другая цель и поход. Итак,
Дано - i686-Athlon64 с LFS на борту, i586-Pentium-200 без ничего.
Хочется - Научиться технике кросс-компиляции, в качестве побочного эффекта сделать шуструю роутерообразную машину из Pentium-200.
План - Скомпилировать систему для i586 по кусочкам на A64, вставить жесткий диск от P-200, ну и дальше по порядку (an easy part): разбить на разделы, отформатировать, создать дерево каталогов, записать основные конфиги, скопировать скомпилированное ПО (в бинарниках), записать загрузчик. Загвоздка собственно состоит в первой части (кросс-компиляции). По результатам гугления сложилось определенное понимание того как это нужно делать, но на практике я это воплотить так и не смог, возможно из-за мелких просчетов, возможно дело в неправильно понятом концепте в целом. Я попытаюсь внятно изложить процесс как я его понимаю, от All прошу его прокомментировать и/или кинуть полезной ссылкой.
---
Компилятор (в моем случае gcc) создает байткод только для той архитектуры, для которой он был собран - опцией --target. Для сборки софта также необходимо иметь binutils, standart c library (glibc) + заголовочные файлы. Таким образом, если у меня получится соединить эти компоненты (gcc+binutils+glibc+headers), запускающиеся на --host=i686 и собирающие код для --target=i386 (знающие о формате исполняемых файлов и библотек на i386) я получу желаемый toolchain. Затем, при сборке софта, нужно будет либо задавать переменную окружения CC=i386-pc-linux-gnu (для использования соответствующего компилятора), либо передавать configure ключ --host=i386-pc-linux-gnu (как показатель того что собираемая софтина будет запускаться на i386).
Теперь мои действия: