Некоторые программы, вы можете просто перекомпилировать новую платформу, никаких проблем. Если это очень простая программа, не использующая ничего конкретного для этой ОС, вы можете уйти от этого. В основном, взяв исходный код, переместив его в другую ОС и используя там компилятор. Тем не менее, даже если есть определенный код, вы можете использовать флагов времени компиляции или константы в своем коде, чтобы заставить компилятор работать по-другому. Я ржавый на мой синтаксис C++, но я думаю, что это должно показать, что я имею в виду:
#if OS == WINDOWS
root = "C:\\";
#elseif OS == LINUX
root = "/";
#endif
Другой метод для запуска программы в виртуальной машине, как Java. Эта виртуальная машина будет работать на разных платформах, и ваш исполняемый файл должен иметь возможность беспрепятственно запускать что-либо, используя его. Возможно, вам придется выполнить перекомпиляцию с несколькими небольшими изменениями, если есть код, специфичный для ОС, но если вы собираетесь с самого начала на порт, то вы, вероятно, не беспокоитесь об этом.
Третий способ - это комбинация двух, и, если я правильно помню, что делает Firefox. Большая часть кода остается неизменной, но в ней используется база для запуска, которая специально скомпилирована для этой ОС, которая определяет разные вещи, создает определенные типы переменных, например nsInt
(прошло некоторое время с тех пор, как я просмотрел FF код, поэтому я, скорее всего, ошибаюсь, но я знаю, что preending ns
- это их соглашение), которое вы использовали бы вместо int
, так как он был бы специально разработан для разных платформ.
Когда вы компилируете, для базы выбирается правильная платформа, затем вся программа скомпилируется с использованием этого.