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

Gearoid Murphy
źródło
+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

Ruairi Fullam
źródło
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.

trurl
źródło
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,