понимание необходимости компиляторов для разных платформ

Я пытаюсь понять, как работает вся цепочка сборки, чтобы я мог лучше понять, что происходит, когда я создаю / связываю / компилировать и т. д.

У меня возникла проблема с одним вопросом: если компилятор превращает исходный код в собственную сборку, почему одна и та же программа не может работать в разных ОС? Разве сборка не запускается непосредственно процессором? То есть один и тот же машинный код должен работать в каждой ОС, если это одна и та же архитектура, не так ли? Почему бы и нет?

РЕДАКТИРОВАТЬ: Большинство ответов на данный момент касается вызова API ОС . Очевидно, это проблема. Мой вопрос касается прямого машинного кода . Проходит ли он прямо в ЦП или нет? Если бы я написал программу на ассемблере, мне все равно пришлось бы компилировать отдельно для каждой ОС? (побочный момент: если я использовал стандартный c ++ cin / cout, зависит ли эта ОС от компиляции для прямого ввода-вывода сборки, или ответ зависит от компилятора?)

5
задан Baruch 10 November 2010 в 22:14
поделиться