Я разрабатываю приложение на 64 бита. Действительно ли возможно запустить приложение на 64 бита на ОС на 32 бита?

Я разрабатываю приложение на 64 бита. Действительно ли возможно запустить приложение на 64 бита на ОС на 32 бита?

Обратите внимание на то, что вопрос универсален и не характерен для Windows OS. Infact приложение сам по себе является портативным через ОС.

12
задан Jay 25 February 2010 в 13:18
поделиться

9 ответов

(Предположим, вы говорите о AMD64 (== EM64T == x86_64 ) и x86 для 64-разрядной и 32-разрядной версий соответственно)

Вы можете запускать код AMD64 только на процессорах x86 путем эмуляции (например, qemu ) или некоторых видов виртуализации (я считаю, что VMWare может поддерживать 64-битную гостевую ОС на 32-битной ОС хоста на 64-битном ЦП). Однако я считаю, что это означает запуск 64-битной ОС в качестве гостя с эмуляцией или виртуализацией.

По мере того, как вы разрабатываете приложение, не должно быть слишком сложно разрабатывать как 32-битные, так и 64-битные сборки вашего кода.

Для Mac вы можете отправить один двоичный файл, содержащий оба типа кода, или Mac OSX может запускать ваш 64-разрядный двоичный файл на 32-разрядном ядре (правда, только на процессоре с поддержкой x86_64). Для Windows и Linux вам придется либо отправлять отдельные установщики, либо поставлять какой-нибудь умный установщик, который выбирает правильные двоичные файлы во время установки. Для Linux существует проект по добавлению возможности запуска кода AMD64 на ядре x86 на процессоре AMD64 - http://linuxpae64.sourceforge.net/ - но не похоже, что он очень далеко продвинулся в основное ядро.

Есть какая-то конкретная причина, по которой вы хотите создавать только 64-битные двоичные файлы?
Если это необходимо для доступа к дополнительной памяти, 32-битная ОС все равно не сможет предоставить вам дополнительную память .
Если нужно избежать тестирования двух разных версий, просто создайте 32-разрядную версию, она будет работать в Windows AMD64 и большинстве дистрибутивов Linux AMD64 без проблем.

14
ответ дан 2 December 2019 в 03:32
поделиться

На windows, только используя виртуальную машину.

На OS X 64Bit приложения работают нативно (спасибо Стивену)

7
ответ дан 2 December 2019 в 03:32
поделиться

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

5
ответ дан 2 December 2019 в 03:32
поделиться

Есть более простое решение, чем пытаться запустить 64-битную программу на 32 -битная ОС (включая выполнение через эмулируемую или виртуальную 64-разрядную платформу поверх 32-разрядной ОС): перекомпилируйте ее для 32-разрядной ОС .

Когда вы сказали, что он переносится на разные ОС, вы также имели в виду не 64-битные ОС? Я не мог бы назвать что-то переносимым, не указав «только 64-битный», если бы это было так, и я думаю, что многие (может быть, даже большинство?) Программистов также ожидают такой квалификации, по крайней мере, в настоящее время.

4
ответ дан 2 December 2019 в 03:32
поделиться

Нет.

См. FAQ Microsoft :

Термины 32-разрядный и 64-разрядный относятся к способу обработки информации процессором компьютера (также называемым ЦП). { {1}} 64-разрядная версия Windows обрабатывает большие объемы оперативной памяти (RAM) более эффективно, чем 32-разрядная система. Для получения дополнительных сведений перейдите к описанию различий между 32-разрядными версиями Windows Vista и 64-разрядными версиями Windows Vista в Интернете.

Поймите разницу между 32-битной и 64-битной версиями, и вы поймете, почему это невозможно.

3
ответ дан 2 December 2019 в 03:32
поделиться

можно использовать qemu в режиме мягкой эмуляции

3
ответ дан 2 December 2019 в 03:32
поделиться

См. это (предполагается, что вы используете Windows):

Если программа специально разработана для 64-битной версии Windows, она не будет работать на 32-битной версии Windows. (Однако большинство программ, разработанных для 32-разрядной версии Windows, будут работать на 64-разрядной версии Windows.)

Драйверы устройств, разработанные для 64-разрядной версии Windows, не будут работать на компьютерах с 32-разрядной версией Windows. Чтобы узнать, как проверить наличие драйверов, см. раздел Обновление драйвера для оборудования, которое не работает должным образом, или перейдите на веб-сайт производителя устройства.

2
ответ дан 2 December 2019 в 03:32
поделиться

64-битное приложение не работает с 32-битным периодом процессора

64-битное приложение использует 64-битный регистр. Это просто не подойдет.

2
ответ дан 2 December 2019 в 03:32
поделиться

В Windows нет. В OS X да. Я не знаю, как обстоят дела с Linux.

На самом деле Snow Leopard загружается в 32-битное ядро, но по умолчанию компилирует приложения в 64-битном режиме, так что это довольно часто встречается в OS X.

2
ответ дан 2 December 2019 в 03:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: