Извините за довольно простой и, вероятно, общий вопрос: я где-то слышал / читал, что в Windows вы можете запустить 32-битный исполняемый файл на 64-битной машине и наоборот; но не может сделать это в Linux / UNIX. Надеясь на то, что эксперт может предоставить некоторые детали / причины или хорошую ссылку (ссылки) на это?

4 ответа4

3

Вы можете сделать это на обоих.

Архитектура процессора amd64/x64 может выполнять 32-битные инструкции, так что это не проблема. И ядра Windows, и Linux могут обрабатывать 32-битные процессы. То, к чему это обычно сводится, является общими библиотеками. 32-битная программа должна использовать 32-битные разделяемые библиотеки. Если 32-разрядная версия библиотек, в которой она нуждается, не установлена, динамическое соединение во время выполнения не будет работать, и программа не будет работать из-за отсутствия библиотеки.

Microsoft поставляется с 32-разрядными версиями практически всех необходимых библиотек, поскольку они действительно хотят, чтобы 32-разрядные компоненты запускались (черт возьми - некоторые их собственные программы все еще поставляются только как 32-разрядные двоичные файлы!). В Linux вы должны убедиться, что вы установили пакеты, такие как ia32-libs, чтобы иметь 32-битные версии общих разделяемых библиотек.

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

1

Вы можете сделать это в обоих случаях, но может ли работать конкретная программа, зависит от наличия библиотек.

И Linux, и Windows имеют общие библиотеки (Windows называет их DLL), которые зависят от архитектуры. Вы не можете загрузить 64-битную библиотеку в 32-битный процесс и наоборот.

Оба набора библиотек обычно доступны и хранятся в разных каталогах, чтобы загрузчик не перепутал их (дистрибутивы Linux обычно помещают 64-битные библиотеки в /usr /lib64 или /lib64)

0

Насколько я знаю, вы не можете запускать 64-битные приложения в 32-битной операционной системе.

Однако как Windows, так и Linux 64-битные могут запускать 32-битные приложения.

0

Вероятно, вам потребуется установить 32-битные библиотеки совместимости, чтобы запускать 32-битные приложения в Linux. Конечно, то, что вам нужно установить, зависит от дистрибутива. С Ubuntu вы бы использовали следующие команды терминала:

apt-get update
apt-get install ia32-libs

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .