2010-02-25 2 views
12

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

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

+1

С вопросом, похоже, вы пытаетесь использовать рассматриваемое приложение. Я бы переписал название и вопрос: «Я разрабатываю приложение для Windows. Могу ли я отправлять только 64-битные двоичные файлы и работать с ними как на 32-битной, так и на 64-битной Windows?» –

+0

@ Дуглас, надеюсь, мое редактирование в порядке. – Jay

+1

Временно закрыт и открыт для предотвращения миграции в SU. –

ответ

14

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

Вы можете запустить код AMD64 на процессорах x86 только эмуляции (например, qemu), или некоторые виды виртуализации (я считаю, что VMWare может поддерживать 64-битную гостевую ОС на 32-битной ОС хоста на 64-разрядном процессоре 6400 МГц). Однако это означает, что 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 без проблем.

+0

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

+0

На Mac вы также можете просто отправить 64-битный двоичный файл, и он будет работать как на 32, так и на 64-битных ядрах. –

+0

@ Stephen - интересно - я отредактирую свой ответ. –

7

В окнах используется только virtual machine.

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

+0

, который выполняет все эти ответы без предоставления исправления? –

+0

+1 - Сомоны, опуская все ответы, в том числе мои собственные. и я не могу понять, почему. Если мы ошибаемся, предоставьте правильное решение. – LiamB

+0

@Pino: Я думаю, что кто-то попытался получить свой ответ на вершину в начале, опуская все остальные ответы –

5

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

+0

Зачем это произошло? – LiamB

+0

У этого все еще есть понижение, может ли кто-нибудь объяснить, почему? – LiamB

+0

Зависит от ОС. Он не будет работать в Windows, но он будет работать на OS X. –

2

См this (при условии, что вы работаете в Windows):

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

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

3

No.

See Microsoft FAQ:

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

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

+0

Как насчет эмуляции и виртуальных машин? – mouviciel

+0

Это не «родной», о котором я думаю, о чем спрашивает OP. –

+0

@mouviciel: тогда 64-разрядная программа будет работать на эмулируемой или виртуальной 64-битной платформе вместо работы на 32-битной платформе. – 2010-02-25 23:03:01

4

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

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

2

В Windows, нет. На OS X, да. Я не знаю, что такое положение дел в Linux.

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

2

64 разрядное приложение не запускается на 32-битной период процессора

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

 Смежные вопросы

  • Нет связанных вопросов^_^