Переносимый исполняемый файл Windows, эквивалент Linux

565
Ursescu Ionut

Недавно я сделал простую игру с использованием Unity 3d и обнаружил, что она работает на любой машине с Windows, просто копируя файлы и исполняемые файлы.

Мне было интересно, как это можно сделать, потому что я прочитал, что вы не можете сделать скомпилированную программу переносимой. Из-за системной архитектуры, версии Windows ... Вы должны скомпилировать для каждой машины.

Также мне было интересно, есть ли что-то подобное для машин с Linux.

И если кто-то может объяснить мне, что происходит при установке игры (что делает программа, если есть какая-то компиляция или только копирование файлов, задайте пути и проверяйте зависимости)

0
Вам нужно будет скомпилировать для разных архитектур ЦП, но Windows достаточно совместима. Таким образом, в большинстве случаев вам нужно беспокоиться только о сборке версии для x86 или x64, и x86 обычно будет работать в обоих случаях. Jonno 6 лет назад 2
Что вы имеете в виду портативный? Как файлы .paf, которые использует программное обеспечение PortableApps.com? Или .exe файлы, которые не требуют прав администратора для запуска и не хранят много данных? Существует множество определений и разновидностей портативного программного обеспечения. InterLinked 6 лет назад 0
.exe файлы, которые могут работать независимо от версии Windows Ursescu Ionut 6 лет назад 0

1 ответ на вопрос

2
theJack

Вы правы, программа должна быть скомпилирована для каждой конкретной архитектуры и операционной системы. Скомпилированные программы не переносимы между архитектурами или ОС.

К счастью, почти каждый компьютер имеет 32-битную архитектуру x86 или 64-битную архитектуру x86_64 (которая совместима с x86). Кроме того, все версии Windows после и включая XP в основном совместимы, так как все они основаны на одном ядре. Это позволяет скомпилированному для x86_64 и Windws запускаться на любой машине с 64-битными окнами, а программу, скомпилированную для x86-окон, можно запускать практически на любой машине с Windows. Это, конечно, при условии, что все надлежащие dll на месте.

То же самое верно для Linux, так как все версии Linux должны быть совместимы.

При установке игры обычно просто копируются игровые файлы и библиотеки в определенный каталог. Иногда он устанавливает некоторые переменные, необходимые для запуска игры. Программа установки практически никогда не компилирует исходный код перед установкой, хотя некоторые программы (обычно для Linux) распространяются так, что пользователь должен сам скомпилировать их перед установкой.

Проблема в том, что в Linux существует большое количество установленных библиотек, включая библиотеки, которые не могут быть статически связаны, поскольку они различаются в зависимости от системы. Это значительно затрудняет предоставление исполняемых файлов Linux, которые «просто работают». Некоторые люди и компании пытаются это сделать, но в более необычных системах Linux это все равно не получится. dirkt 6 лет назад 0