Как связка инструментов связана с архитектурой ОС и платформы

Может ли кто-нибудь объяснить зависимость инструментальной цепочки от ОС и архитектуры платформы, например, если я хочу скомпилировать код для архитектуры arm, стоит ли искать архитектуру платформы или ОС, на которой работает платформа, а затем адаптировать для нее цепочку инструментов?

1

Решение

Большинство компиляторов компилируют свой код на язык ассемблера. Код, который они создают, скорее всего, будет зависеть от различных обращений к операционной системе (например, для выделения динамической памяти) и иметь заголовок, определяющий свойства файла, такие как расположение кода и разделы данных (например, ELF, PE). Затем ассемблер компилирует эту сборку в объектные файлы, которые связаны с помощью компоновщика этой платформы. Все эти инструменты создают код для конкретной архитектуры и ОС.

Это не означает, что компилятор и компоновщик не могут работать в системе другого типа. Процесс компиляции кода для другой системы называется кросс-компиляцией. Несмотря на то, что он используется реже, чем компиляция для той же платформы, на которой работает компилятор, он довольно широко используется. Несколько примеров этого — компилирование ядер ОС, которые, конечно, не могут полагаться на другую ОС, или компиляция нативного кода для Android (Android NDK содержит кросс-компилятор).

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector