Как включить 32-битную двоичную совместимость в Linux Mint 11 x64

8

Я недавно установил x64 Linux Mint 11, в основном Ubuntu Natty. После установки я обнаружил, что 32-разрядные приложения, которые запускались в моей системе Ubuntu, были отклонены моей системой Mint 11. Когда я использую утилиту 'file' для проверки двоичного файла, он правильно идентифицирует его как 32-битного эльфа, но я не могу вызвать приложение.

Я попытался запустить его из bash и os.system на языке Python, но безрезультатно, поэтому я подозреваю, что он должен иметь какое-то отношение к 32-битному режиму двоичной совместимости, но мои знания об этой подсистеме и о том, как ее включить ограничен, кто-нибудь может помочь?

Спасибо

Гиероид Мерфи
источник
+1 спасибо за вопрос. Я только что перешел от Natty к Mint, а также!
Ален Паннетье

Ответы:

5

Установите ia32-libs и убедитесь, что файл приложения помечен как исполняемый, что должно сработать! :)

Позднее редактирование:

Библиотеку можно было бы назвать ia32-libs-multiarch вместо ia32-libs.
apt-get install ia32-libs-multiarch

Руаири Фуллам
источник
Отлично, это сработало отлично, спасибо! Я немного не уверен, почему именно это работает? Даже если бы я раньше отсутствовал в библиотеках, ldd хотя бы перечислил требуемые общие объектные файлы. Перед установкой ia32-libs ldd просто сказал бы, что двоичный файл не был динамически связанным исполняемым файлом, есть ли какой-то другой секретный соус, который ia32-libs использует для запуска 32-битных приложений?
Героид Мерфи
Я не уверен, если честно, но это то, что сработало для меня! :) (PS Отметьте ответ, если вам это нравится!). :)
Ruairi Fullam
Интересно, что я удалил ia32-libs, и исполняемый файл все еще работал (он статически связан), после более тщательного изучения вывода из 'lsmod', я вижу, что есть модуль с именем "binfmt_misc", это то, что я имел в виду, я Я уверен, что это основное требование для поддержки альтернативных двоичных форматов, таких как 32-битные или COFF EXE-файлы из Windows.
Героид Мерфи
2

Я ничего не знаю о MINT, но у меня есть некоторый опыт работы с Debian: для запуска 32-битных двоичных файлов вам нужны почти все библиотеки, поддерживающие 32-битные двоичные файлы в 64-битной среде. Пытаться

apt-get install ia32-libs

Если в вашей системе есть apt-get ... (или попробуйте aptitude или что-нибудь, что поставляется с MINT)

Вы можете проверить, какие библиотеки нужны, используя ldd :

lofi:~# ldd /bin/ping
linux-vdso.so.1 =>  (0x00007ffff7dff000)
libc.so.6 => /lib/libc.so.6 (0x00007fd872ed1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd87323c000)

Если отсутствуют какие-либо библиотеки, ldd сообщит вам.

Trurl
источник
Когда я использовал ldd в 32-битном двоичном файле до того, как у меня был установлен ia32-libs, он возвращал ошибку, в которой говорилось, что двоичный файл не был динамически связанным исполняемым файлом, я знаю, что есть модуль ядра, созданный для обработки различных исполняемых форматов, и я ожидал что это было то, что нужно было настроить для обеспечения 32-битной двоичной совместимости.
Героид Мерфи