Как я могу сделать портативный исполняемый файл? - PullRequest
10 голосов
/ 03 ноября 2010

Есть ли способ скомпилировать исходный файл ac / c ++ для вывода файла .exe, который можно запускать на других процессорах на разных компьютерах?Я прошу это для платформы Windows.Я знаю, что это можно сделать с помощью Java или C #, но он использует виртуальную машину.

PS: Для тех, кто сказал, что это может быть сделано только с виртуальными машинами или исходный код должен быть скомпилирован на каждой машинеЯ спрашиваю, все ли вирусы написаны на java или c #, и вам нужен компьютер vm для заражения или вам нужно скомпилировать исходный код червя на вашем компьютере для заражения?(я не пытаюсь создать вирус, но это хороший пример :))

Ответы [ 12 ]

0 голосов
/ 03 ноября 2010

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

Наиболее распространенная такая виртуальная машинаварианты виртуальной машины Java.Поэтому я бы посоветовал взглянуть на компилятор, который компилирует код C в байт-код Java .

Кроме того, Windows когда-то воспринимала x86 как виртуальную машину на других (альфа) архитектурах.

0 голосов
/ 03 ноября 2010

На самом деле, некоторые операционные системы поддерживают это;обычно его называют « толстый двоичный файл ».

В частности, Mac OS использует (использовал) его для поддержки PowerPC и x86 в одном двоичном файле.

В MS Windowsоднако это невозможно, поскольку ОС не поддерживает его.

...