Будет ли программа, выполненная в 64-битном режиме, работать на 32-битном компьютере? - PullRequest
0 голосов
/ 08 февраля 2010

Как сказал заголовок, я выполнил программу на C и создал двоичный файл на 64-разрядной машине. Будет ли этот двоичный файл работать под 32-разрядным?

Ответы [ 3 ]

5 голосов
/ 08 февраля 2010

64-разрядные двоичные файлы не могут работать в 32-разрядной ОС. Если file сообщает ELF 64-bit, у вас есть 64-разрядный двоичный файл.

Чтобы построить 32-битные двоичные файлы в 64-битной Linux, вам нужно передать -m32 в gcc. Вам также необходимо установить 32-битные библиотеки (sudo apt-get install libc6-dev-i386).

4 голосов
/ 08 февраля 2010

Компилятор не имеет значения. Имеет значение: генерируется ли код 32 бита (ответ: да) или 64 бита (ответ: нет).

0 голосов
/ 09 февраля 2010

Будет ли это работать на 32-битной машине? Один с процессором, который не поддерживает 64-битный режим? Нет.

Будет ли он работать на 64-битной виртуальной машине в 32-битной операционной системе? Да, по моему опыту.

Удивительным результатом является то, что 64-битные виртуальные машины могут работать под 32-битной хост-операционной системой при условии, что процессор способен и вы не хотите выделять слишком много оперативной памяти (> 2G или около того) для гостя. 1005 *

...