Я возиться с созданием своего собственного набора инструментов g cc для процессора Cortex-A5, и я стараюсь максимально глубоко погрузиться в каждый шаг. Я сознательно избегал использования crosstool-ng или других инструментов, чтобы помочь мне лучше понять, что происходит в процессе создания цепочки инструментов.
Хотя одна вещь меня озадачивает. Во время настройки и сборки binutils мне нужно указать цель (--target). Эта цель может быть либо classi c host-tuple (например: arm-none- linux -gnuabi), либо типом спецификаций c, например, как i686-elf.
Почему эта цель нужна? и что конкретно он делает с сгенерированными программами "as" и "ld", созданными binutils?
Например, если я собираю его с помощью arm-none- linux -gnueabi, это выглядит как результат Программа «as» поддерживает все инструкции arm, установленные под солнцем (armv4t, armv5, et c.).
Это просто для экономии места в полученном исполняемом файле? Или что-то еще происходит?
Я бы понял, если бы я настроил binutils для определенного набора команд c, например. Создайте мне ассемблер, который понимает инструкции armv4t.
Рассматривая источник binutils и gas, вы увидите, что хост-кортеж выбирает некоторые заголовочные файлы, расположенные в gas / config / t c * газ / конфиг / тэ *. Опять же, это кажется произвольным, поскольку это широкие категории систем.
Извините за бессвязные слова :) Я предполагаю, что мой квест можно сформулировать так: Почему binutils не является пакетом "все в одном"?