Come eseguire l'app a 32-bit in Ubuntu 64-bit?

106

Ho installato Ubuntu 14.04 e l'attuale SDK di sviluppo Android, che contiene file eseguibili a 32 bit. Ho scoperto che non riesco a eseguire quei file binari a 32 bit. Provare ad avviarli da bash mi dà un errore:

$ ./adb
bash: ./adb: No such file or directory

È lì però:

$ ls -al ./adb
-rwxrwxrwx 1 thomas thomas 1231255 Jan 17 13:31 ./adb
$ file ./adb
./adb: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped. Same symptom for all the other 32-bit tools in the Android SDK. 

Nei tempi passati si potevano semplicemente installare le librerie a 32 bit su Ubuntu a 64 bit per ottenere il supporto a 32 bit, ma questo non sembra funzionare più.

Come faccio a eseguire app a 32 bit su Ubuntu 14.04 a 64 bit?

    
posta Thomas Stuefe 24.04.2014 - 09:29

4 risposte

159

Per eseguire un file eseguibile a 32 bit su un sistema Ubuntu multi-architettura a 64 bit, devi aggiungere l'architettura i386 e installare i tre pacchetti di librerie libc6:i386 , libncurses5:i386 e libstdc++6:i386 :

sudo dpkg --add-architecture i386

O se usi Ubuntu 12.04 LTS (Precise Pangolin) o meno, usa questo:

echo "foreign-architecture i386" > /etc/dpkg/dpkg.cfg.d/multiarch

Quindi:

sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

Se fallisce, anche

sudo apt-get install multiarch-support

Dopo questi passaggi, dovresti essere in grado di eseguire l'applicazione a 32 bit:

./example32bitprogram
    
risposta data Avinash Raj 24.04.2014 - 09:31
6

"Nessun file o directory" potrebbe appaear quando hai il tuo binario, ma manca alcune librerie. Se installi il pacchetto build-essential , avrai il comando ldd disponibile. Questo comando ldd ./adb | grep not ti mostrerà quali librerie mancano. Basta installare queste librerie in i386 arch con apt. In questo modo: apt-get install libmissing:i386 Attenzione, alcuni pacchetti buggy tenteranno di eliminare la versione a 64 bit.

    
risposta data Barafu Albino 24.04.2014 - 10:44
4

E se vuoi usare "adb" c'è un pacchetto per questo:

sudo apt-get install android-tools-adb

E sulle librerie a 32 bit - solo:

sudo apt-add-architecture i386

sarà sufficiente.

    
risposta data aastefanov 24.04.2014 - 14:29
2

Oltre all'eccellente risposta di Zanna e Avinash Raj ho dovuto installare anche gcc-multilib:

sudo apt-get install gcc-multilib

Forse è perché volevo eseguire una vecchia versione gcc su 64 bit.

    
risposta data user2144067 04.09.2017 - 15:52

Leggi altre domande sui tag