Jak włączyć 32-bitową zgodność binarną w systemie Linux Mint 11 x64


8

Niedawno zainstalowałem x64 Linux Mint 11, w zasadzie Ubuntu Natty. Od czasu instalacji zauważyłem, że 32-bitowe aplikacje, które działały na moim systemie Ubuntu, są odrzucane przez mój system Mint 11. Kiedy używam narzędzia „file” do sprawdzania pliku binarnego, poprawnie identyfikuje go jako 32-bitowego elfa, ale nie mogę wywołać aplikacji.

Próbowałem uruchomić go z bash i os.system a la python, ale bezskutecznie, więc podejrzewam, że to musi mieć coś wspólnego z 32-bitowym trybem binarnej kompatybilności, ale moja wiedza na temat tego podsystemu i jak to włączyć jest ograniczony, czy ktoś może pomóc?

Dzięki


+1 dzięki za zapytanie. Właśnie przeszedłem z natty na Mint!
Alain Pannetier

Odpowiedzi:


5

Zainstaluj ia32-libs i upewnij się, że plik aplikacji jest oznaczony jako wykonywalny, co powinno wystarczyć! :)

Późna edycja:

Bibliotekę można nazwać ia32-libs-multiarch zamiast ia32-libs.
apt-get install ia32-libs-multiarch


Doskonale, działało idealnie, dzięki! Jestem trochę niepewny, dlaczego to zadziałało ?, nawet jeśli wcześniej brakowało mi bibliotek, ldd wyświetliłby przynajmniej wymagane pliki obiektów współdzielonych. Przed zainstalowaniem ia32-libs, ldd powiedziałby po prostu, że plik binarny nie był dynamicznie połączonym plikiem wykonywalnym, czy jest jakiś inny tajny sos, którego używa ia32-libs do uruchomienia 32-bitowych aplikacji?
Gearoid Murphy

Nie jestem szczery, ale to zadziałało dla mnie! :) (ps Zaznacz odpowiedź, jeśli Ci się podoba!). :)
Ruairi Fullam

Interesujące, usunąłem ia32-libs i plik wykonywalny nadal działał (jest statycznie powiązany), po dokładniejszym zbadaniu danych wyjściowych z 'lsmod', widzę, że istnieje moduł o nazwie "binfmt_misc", do tego miałem na myśli, ja całkiem pewne, że jest to podstawowy wymóg obsługi alternatywnych formatów binarnych, takich jak 32-bit lub exe COFF z Windows.
Gearoid Murphy,

2

Nie wiem nic o MINT, ale mam pewne doświadczenie z Debianem: Aby uruchomić 32-bitowe pliki binarne, potrzebujesz prawie w każdym przypadku bibliotek obsługujących 32-bitowe pliki binarne w środowisku 64-bitowym. Próbować

apt-get install ia32-libs

Jeśli w twoim systemie jest apt-get ... (lub wypróbuj aptitude lub cokolwiek, co jest dostarczane z MINT)

Możesz sprawdzić, które biblioteki są potrzebne za pomocą 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)

Jeśli brakuje jakichś bibliotek, ldd powie ci.


Kiedy użyłem ldd na 32-bitowym pliku binarnym przed zainstalowaniem biblioteki ia32-lib, zwrócił błąd informujący, że plik binarny nie był dynamicznie połączonym plikiem wykonywalnym. Wiem, że istnieje moduł jądra do obsługi różnych formatów plików wykonywalnych i spodziewałem się że właśnie to trzeba było skonfigurować, aby umożliwić 32-bitową zgodność binarną.
Gearoid Murphy,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.