Есть ли способ сделать двойной исполняемый файл для Mac / Windows? - PullRequest
1 голос
/ 30 октября 2009

Я ищу способ сделать двойной исполняемый файл для Windows / Mac. То есть я могу выполнить файл в любой ОС, и он запустит какой-то фрагмент кода, который мне нужен для этой ОС. Этот код может быть либо сценарием, либо (желательно) скомпилированным в исходном коде, но его нужно запускать в операционной системе vanilla без необходимости устанавливать какие-либо дополнительные инструменты или библиотеки. Другое требование - это должен быть один файл.

Кто-нибудь знает, как это сделать, или это вообще возможно?

Ответы [ 8 ]

9 голосов
/ 30 октября 2009

Единственный способ увидеть эту работу - установить дополнительные инструменты:

  • Сценарии: Синтаксические анализаторы команд чрезвычайно различаются между Mac (оболочка bash) и Windows (у которого есть 2: PowerShell и оригинал, не знаю его технического названия). Вам либо нужно установить Services for Unix / Cygwin / Insert-other-UNIXy-Environment на Windows, либо использовать что-то вроде perl или другого языка сценариев. В любом случае при не менее Windows и, возможно, Mac, потребуются дополнительные готовые инструменты.
  • Исполняемые файлы: Единственный способ сделать это - использовать Java, .NET / Mono или какую-либо другую кроссплатформенную среду виртуальных машин на основе байт-кода. Следовательно, вы все еще зависите от инструментов, которые не входят в комплект поставки. (IIRC, Java не поставляется с Windows, а Mono не поставляется с Mac.)
  • Другие проблемы: Самая большая проблема, с которой вы столкнетесь после работы с зависимостью от инструмента, заключается в том, что пути в обеих системах различаются. Понимание того, что пути Mac, как правило, являются путями в стиле Unix (хотя я считаю, что «старые» пути, разделенные двоеточиями Mac, все еще допустимы). Вам также придется иметь дело с различными местоположениями файлов и местоположениями по умолчанию, основанными на обеих средах. Это будет боль.

Теперь, если вы можете избежать кросс-компиляции вместо бинарной совместимости, вы можете получить ответ в инструменте под названием RealBasic . Первоначально он был основан на Mac, но есть версии для Windows и Linux. Я играл с ним в начале этого десятилетия, и это было довольно аккуратно, но я никогда не использовал это профессионально. Это , если вы будете осторожны, позволит вам написать код один раз и скомпилировать тот же код, что и родные приложения для Mac, Linux и Windows.

1 голос
/ 30 октября 2009

Не совсем то, что вы хотите, но, возможно, заслуживает внимания:

Вы можете использовать Cocotron для компиляции программ, написанных на Obj-C, с использованием Cocoa для Windows. Работает довольно хорошо! Это не даст вам один исполняемый файл для Mac и Windows, но один для Mac и один для Windows.

1 голос
/ 30 октября 2009

Mono или Java можно установить на Mac и запускать программы, предназначенные для кроссплатформенности. Без такого рода специальной библиотеки для поддержки нескольких платформ нет общего знаменателя и нет способа запустить одно и то же приложение на обеих.

1 голос
/ 30 октября 2009

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

1 голос
/ 30 октября 2009

Пока вы используете кроссплатформенный язык, такой как Java, вы можете запускать его на любой ОС. Однако нативный код не будет исполняемым.

1 голос
/ 30 октября 2009

В сценарии все в порядке, но в скомпилированном коде это будет невозможно, поскольку исполняемый файл WIndows (exe) отличается от исполняемых файлов Mac (bin), которые отличаются от исполняемых файлов Linux (что вы хотите).

0 голосов
/ 30 октября 2009

Вы можете рассмотреть StarKits, которые работают с Tcl / Tk.

0 голосов
/ 30 октября 2009

Возможно, вы захотите проверить Realbasic. Это язык клонирования VB с IDE. Он будет создавать исполняемые файлы для Windows, Mac и Linux. realbasic.com

...