Я разрабатываю 64-битное приложение. Возможно ли запустить 64-битное приложение на 32-разрядной ОС?
Обратите внимание, что этот вопрос является общим и не относится к ОС Windows. Infact приложение само по себе переносится через ОС.
Я разрабатываю 64-битное приложение. Возможно ли запустить 64-битное приложение на 32-разрядной ОС?
Обратите внимание, что этот вопрос является общим и не относится к ОС Windows. 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/ - но он не выглядит как будто он очень далеко от ядра mainline.
Есть ли какая-то конкретная причина, по которой вы хотите создать только 64-битные двоичные файлы?
Если он получит доступ к дополнительной памяти, тогда 32-битная ОС не сможет предоставить вам дополнительную память.
Если ему не придется тестировать две разные версии, то просто создайте 32-битную версию, она будет работать на Windows AMD64 и большинство дистрибутивов Linux AMD64 без проблем.
В окнах используется только виртуальная машина.
В OS X приложения на 64 бита запускаются изначально (спасибо Стивену)
Совсем наоборот, бит, я не думаю, что вы можете запустить 64-битное приложение на 32-битной ОС, вы можете использовать виртуальную машину или какую-то виртуализацию.
Это более легкое решение, чем попытка запустить 64-разрядную программу в 32-разрядной ОС (включая выполнение через эмулированную или виртуальную 64-битную платформу поверх 32-разрядной ОС): перекомпилировать ее для 32-разрядная ОС.
Когда вы сказали, что он переносится через разные ОС, вы также имели в виду не 64-битные ОС? Я не мог назвать что-то портативное без квалифицированного "только 64-битного", если это было так, и я думаю, что многие (возможно, даже большинство?) Программистов также ожидают, что квалификация, по крайней мере в настоящее время.
возможно использование qemu в режиме мягкой эмуляции
Нет.
См. часто задаваемые вопросы по Microsoft:
Термины 32-разрядные и 64-разрядные способ компьютерного процессора (также называемый CPU), обрабатывает информацию. 64-разрядная версия Windows обрабатывает большое количество оперативной памяти (ОЗУ) более эффективно, чем 32-разрядный система. Для получения дополнительной информации перейдите к A описание различий между 32-разрядные версии Windows Vista и 64-разрядные версии Windows Vista в Интернете.
Понимайте разницу между 32-битными и 64-битными, и вы поймете, почему это невозможно.
Смотрите этот (при условии, что вы используете Windows):
Если программа специально разработана для 64-разрядной версии Windows, она не будет работать на 32-разрядной версии Windows. (Однако большинство программ, предназначенных для 32-разрядной версии Windows, будут работать в 64-разрядной версии Windows.)
Драйверы устройств, предназначенные для 64-разрядной версии Windows, не будут работать на компьютерах под управлением 32-разрядной версии Windows. Чтобы узнать, как проверить наличие драйверов, см. "Обновление драйвера для оборудования, которое не работает должным образом" или перейти на веб-сайт производителя устройства.
В Windows, нет. На OS X, да. Я не знаю, что такое положение дел в Linux.
Фактически Snow Leopard загружается в 32-битное ядро, но по умолчанию компилирует приложения по 64-разрядной версии, поэтому это довольно часто встречается в OS X.
64-разрядное приложение не запускается в 32-разрядный процессорный период
64-разрядное приложение использует регистр шириной 64 бит. Это просто не подходит.