Может ли кто-нибудь объяснить зависимость инструментальной цепочки от ОС и архитектуры платформы, например, если я хочу скомпилировать код для архитектуры arm, стоит ли искать архитектуру платформы или ОС, на которой работает платформа, а затем адаптировать для нее цепочку инструментов?
Большинство компиляторов компилируют свой код на язык ассемблера. Код, который они создают, скорее всего, будет зависеть от различных обращений к операционной системе (например, для выделения динамической памяти) и иметь заголовок, определяющий свойства файла, такие как расположение кода и разделы данных (например, ELF, PE). Затем ассемблер компилирует эту сборку в объектные файлы, которые связаны с помощью компоновщика этой платформы. Все эти инструменты создают код для конкретной архитектуры и ОС.
Это не означает, что компилятор и компоновщик не могут работать в системе другого типа. Процесс компиляции кода для другой системы называется кросс-компиляцией. Несмотря на то, что он используется реже, чем компиляция для той же платформы, на которой работает компилятор, он довольно широко используется. Несколько примеров этого — компилирование ядер ОС, которые, конечно, не могут полагаться на другую ОС, или компиляция нативного кода для Android (Android NDK содержит кросс-компилятор).
Других решений пока нет …