Я разрабатываю приложение на 64 бита. Действительно ли возможно запустить приложение на 64 бита на ОС на 32 бита?
Обратите внимание на то, что вопрос универсален и не характерен для Windows OS. Infact приложение сам по себе является портативным через ОС.
(Предположим, вы говорите о 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 без проблем.
На windows, только используя виртуальную машину.
На OS X 64Bit приложения работают нативно (спасибо Стивену)
Другой способ хорош, но я не думаю, что вы можете запустить 64-битное приложение на 32-битной ОС, вы можете использовать виртуальную машину или какую-то виртуализацию.
Есть более простое решение, чем пытаться запустить 64-битную программу на 32 -битная ОС (включая выполнение через эмулируемую или виртуальную 64-разрядную платформу поверх 32-разрядной ОС): перекомпилируйте ее для 32-разрядной ОС .
Когда вы сказали, что он переносится на разные ОС, вы также имели в виду не 64-битные ОС? Я не мог бы назвать что-то переносимым, не указав «только 64-битный», если бы это было так, и я думаю, что многие (может быть, даже большинство?) Программистов также ожидают такой квалификации, по крайней мере, в настоящее время.
Нет.
Термины 32-разрядный и 64-разрядный относятся к способу обработки информации процессором компьютера (также называемым ЦП). { {1}} 64-разрядная версия Windows обрабатывает большие объемы оперативной памяти (RAM) более эффективно, чем 32-разрядная система. Для получения дополнительных сведений перейдите к описанию различий между 32-разрядными версиями Windows Vista и 64-разрядными версиями Windows Vista в Интернете.
Поймите разницу между 32-битной и 64-битной версиями, и вы поймете, почему это невозможно.
См. это (предполагается, что вы используете Windows):
Если программа специально разработана для 64-битной версии Windows, она не будет работать на 32-битной версии Windows. (Однако большинство программ, разработанных для 32-разрядной версии Windows, будут работать на 64-разрядной версии Windows.)
Драйверы устройств, разработанные для 64-разрядной версии Windows, не будут работать на компьютерах с 32-разрядной версией Windows. Чтобы узнать, как проверить наличие драйверов, см. раздел Обновление драйвера для оборудования, которое не работает должным образом, или перейдите на веб-сайт производителя устройства.
64-битное приложение не работает с 32-битным периодом процессора
64-битное приложение использует 64-битный регистр. Это просто не подойдет.
В Windows нет. В OS X да. Я не знаю, как обстоят дела с Linux.
На самом деле Snow Leopard загружается в 32-битное ядро, но по умолчанию компилирует приложения в 64-битном режиме, так что это довольно часто встречается в OS X.