Come abilitare la compatibilità binaria a 32 bit su Linux Mint 11 x64


8

Di recente ho installato x64 Linux Mint 11, sostanzialmente Ubuntu Natty. Dall'installazione ho scoperto che le applicazioni a 32 bit che erano in esecuzione sul mio sistema Ubuntu sono state respinte dal mio sistema Mint 11. Quando utilizzo l'utilità 'file' per controllare il file binario, lo identifica correttamente come un elfo a 32 bit, ma non riesco a invocare l'applicazione.

Ho provato a avviarlo da bash e os.system a la Python, senza alcun risultato, quindi sospetto che debba avere a che fare con la modalità di compatibilità binaria a 32 bit ma la mia conoscenza di quel sottosistema e come abilitarlo è limitato, qualcuno può aiutare?

Grazie


+1 grazie per chiedere. Sono passato anche da Natty a Mint!
Alain Pannetier,

Risposte:


5

Installa ia32-libs e assicurati che il file dell'applicazione sia contrassegnato come eseguibile, che dovrebbe fare il lavoro! :)

Modifica tardiva:

La lib potrebbe eventualmente essere chiamata ia32-libs-multiarch invece di ia32-libs.
apt-get install ia32-libs-multiarch


Eccellente, ha funzionato perfettamente, grazie !. Sono un po 'incerto esattamente sul perché abbia funzionato ?, anche se prima mancassero le librerie, ldd avrebbe almeno elencato i file degli oggetti condivisi richiesti. Prima di installare ia32-libs, ldd diceva semplicemente che il binario non era un eseguibile collegato dinamicamente, c'è qualche altra salsa segreta che ia32-libs usa per far funzionare le app a 32 bit?
Gearoid Murphy,

Non sono sicuro di essere onesto, ma è quello che ha funzionato per me! :) (ps Segna la risposta se ti piace!). :)
Ruairi Fullam,

Interessante, ho rimosso ia32-libs e l'eseguibile funzionava ancora (è staticamente collegato), dopo un attento esame dell'output di 'lsmod', posso vedere che c'è un modulo chiamato "binfmt_misc", questo è ciò a cui mi riferivo, io abbastanza sicuro che è il requisito principale per supportare formati binari alternativi, come exe a 32 bit o COFF da Windows.
Gearoid Murphy,

2

Non so nulla di MINT, ma ho una certa esperienza con Debian: per eseguire i binari a 32 bit è necessario in quasi tutti i casi le librerie che supportano i binari a 32 bit in un ambiente a 64 bit. Provare

apt-get install ia32-libs

Se c'è apt-get sul tuo sistema ... (o prova aptitude o qualunque cosa venga fornita con MINT)

Puoi controllare quali librerie sono necessarie usando 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)

Se mancano delle librerie, ldd te lo dirà.


Quando ho usato ldd sul binario a 32 bit prima di aver installato ia32-libs, ha restituito un errore che diceva che il binario non era un eseguibile collegato dinamicamente, so che esiste un modulo kernel creato per gestire diversi formati eseguibili e che avevo anticipato che questo era ciò che doveva essere configurato per abilitare la compatibilità binaria a 32 bit.
Gearoid Murphy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.