Як увімкнути 32-бітну бінарну сумісність на Linux Mint 11 x64


8

Нещодавно я встановив x64 Linux Mint 11, в основному Ubuntu Natty. Після встановлення я виявив, що 32-розрядні програми, які працювали в моїй системі Ubuntu, відхиляються моєю системою Mint 11. Коли я використовую утиліту "файл" для перевірки бінарного файлу, він правильно визначає його як 32-бітний ельф, але я не можу викликати програму.

Я намагався запустити його з bash та os.system a la python, безрезультатно, тому я підозрюю, що він повинен мати щось спільне з 32-бітовим режимом бінарної сумісності, але мої знання про цю підсистему та як її ввімкнути обмежений, може хтось допомогти?

Дякую


+1 thx для запитання. Я просто перейшов з натурального на Монетний двір також!
Ален Паннетьє

Відповіді:


5

Встановіть ia32-libs і переконайтеся, що файл програми позначений як виконуваний файл, що повинен зробити цю роботу! :)

Пізнє редагування:

Можливо, ліб можна назвати ia32-libs-multiarch замість ia32-libs.
apt-get install ia32-libs-multiarch


Чудово, що спрацювало чудово, дякую !. Я трохи не впевнений, чому саме він працював? Навіть якщо я раніше не бракував до них, ldd мав би принаймні перелічити необхідні спільні файли об'єктів. Перед встановленням ia32-libs ldd просто сказав, що двійковий файл не є динамічно пов'язаним виконуваним файлом, чи є якийсь інший секретний соус, який ia32-libs використовує для запуску 32-бітних додатків?
Gearoid Murphy

Я не впевнений, якщо чесно, але це те, що працювало для мене! :) (ps Познач відповідь, якщо тобі це подобається!). :)
Ruairi Fullam

Цікаво, що я видалив ia32-libs, і виконуваний файл все ще працював (він статично пов'язаний), після більш детального вивчення виводу з 'lsmod' я бачу, що є модуль під назвою "binfmt_misc". Це те, про що я мав на увазі, я майже впевнений, що це головна вимога щодо підтримки альтернативних бінарних форматів, таких як 32-бітний або COFF exe з Windows.
Gearoid Murphy

2

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

apt-get install ia32-libs

Якщо theres підходить у вашій системі ... (або спробуйте підхоплення або все, що поставляється з 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 скаже вам.


Коли я використовував ldd на 32-бітному бінарному файлі до того, як я встановив ia32-libs, він повернув помилку, сказавши, що бінарний файл не є динамічно пов'язаним виконуваним файлом, я знаю, що є модуль ядра, побудований для обробки різних виконуваних форматів, і я передбачав що це було необхідне для налаштування для забезпечення 32-бітної бінарної сумісності.
Gearoid Murphy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.