Нужно ли перекомпилировать для другого процессора дуги? - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь понять всю эту тему «компиляции» более детально, чем все те, «что компилятор (делает)?» статьи там.

Один большой вопрос для меня - это зависимость от процессора и платформы ОС при компиляции непосредственно в машинный код (например, C). Я пытаюсь сформулировать конкретные вопросы, которые необходимо решить, чтобы прояснить мою картину:

Я компилирую свой код C через gcc в дистрибутиве Linux ...:

  • Можно ли запустить полученный исполняемый файл на любом другом дистрибутиве Linux?
  • Этот исполняемый файл ограничен скомпилированной платформой процессора? Нужно ли искать другой, например power-pc gcc при запуске дистрибутива x86?
  • Можно ли как-нибудь выполнить это на Windows? Я знаю, что исполняемые файлы отличаются, но двоичный код такой же, не так ли?

Итак, в конце мои вопросы нацелены на: компилируется ли нацеленность на конкретную платформу ОС, платформу процессора или и то, и другое?

Спасибо!

1 Ответ

0 голосов
/ 20 апреля 2019

Компиляция целей и , ОС и архитектура.

Операционная система должна быть целевой, потому что:

  • Формат того, что является "исполняемым" файлом , отличается в разных операционных системах.
  • Программы вызывают операционную систему даже для выполнения общих задач, таких как запись в консоль, чтение из файла или чистое завершение (стандарты, такие как POSIX, смягчают зависимости ОС, определяя общий уровень между программой и ОС).

Архитектура ЦП должна быть целевой, поскольку инструкции ЦП различны, даже для разных поколений "одна и та же архитектура" .

  • Можно ли запустить полученный исполняемый файл на любом другом дистрибутиве Linux?

В общем, Да , но на определенныхВ некоторых случаях это может зависеть от типа программы (например, GUI) и предполагаемых служб, доступных в ОС.

  • Этот исполняемый файл ограничен скомпилированной платформой процессора?Нужно ли искать другой, например, power-pc gcc, когда я запускаю дистрибутив x86?

Я не понимаю, что вы подразумеваете под "search" , но, Да , вы можете кросс-компилировать , скажем, для x86 с таргетингом на PPC.

  • Можно ли как-нибудь выполнить это в Windows?Я знаю, что исполняемые файлы отличаются, но двоичный код один и тот же, не так ли?

В наши дни Windows имеет интеграцию с Ubuntu, и это допускает некоторые исключения, но общий ответ таков: Нет из-за вышеизложенного.

...