2013-11-23 1 views
0

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

Я никогда не имел дело с кодом, который нужно скомпилировать, кроме Java, который, как я полагаю, находится между двумя стульями, так что здесь.

Я не понимаю, как скомпилированы игры и программы. Скомпилированы ли они для нескольких архитектур? Или они скомпилированы во время установки (это не выглядит так)?

Насколько я понял, код необходимо скомпилировать на основе локальной архитектуры, чтобы заставить его работать. Это означает, что вы не можете скомпилировать что-то для AMD и «скопировать» двоичные файлы и выполнить их на компьютере под управлением Intel (или аналогичного).

Есть ли что-то, что я неправильно понял здесь, или они используют подход, который отличается от примера, который я представляю?

ответ

1

AMD и Intel являются производителями. Возможно, вы думаете об amd64 (также известный как x86_64) и x86. x86_64, как следует из названия, основано на x86.

Компьютеры с 64-разрядной ОС x86_64 обычно могут запускать приложения x86, но обратное неверно. Таким образом, одна из возможностей заключается в отправке 32-разрядных игр x86, но это ограничивает объем оперативной памяти, доступ к которой возможен для каждого процесса. Однако это может быть хорошо для игры.


Большая проблема заключается в доставке для различных платформ, таких как Playstation и (Windows) ПК. Playstation не только имеет совершенно другую архитектуру процессора (Cell), но и - это другая операционная система.

В этом случае вы не можете просто перекрестно скомпилировать - и это из-за разницы в операционной системе. Вы должны иметь две отдельные версии игры - разделяя кучу общих кодовых и мультимедийных файлов (также называемых активами) - одну версию для ПК и одну для Playstation.

Вы можете использовать Java для решения этой проблемы теоретически ... но это работает только при наличии JVM для всех целевых платформ. Кроме того, в настоящее время на рынке Java существует фрагментация, например, Android поддерживает другой API от JME. И iPhones и iPads вообще не поддерживают Java.

Многие издатели игр фактически не используют Java. Исключением является Mojang.

+0

В этой ситуации вы обычно обычно перекрестно скомпилируете. Это означает, что вы скомпилируете двоичные файлы для одной платформы (сборка Architecture/OS combo) на другой платформе. IE. вы компилируете бинарные файлы для Android (ARM) на (X86). И я бы предположил, что бинарные файлы для playstations также скомпилированы на платформах X86. – espenfjo

+0

Да, извините, я имел в виду, что вы не можете _simply_ перекрестно скомпилировать существующее приложение для другой платформы. –

+0

Благодарим вас за это. Это имеет большое значение, и теперь я вижу, что неправильно понял, как работает компиляция исходного кода. Благодаря! – OptimusCrime