web-dev-qa-db-fra.com

Comment exécuter une application 32 bits dans Ubuntu 64 bits?

J'ai installé Ubuntu 14.04 et le SDK de développement Android actuel, qui contient des exécutables 32 bits. J'ai constaté que je ne pouvais pas exécuter ces fichiers binaires 32 bits. Essayer de les démarrer à partir de bash me donne une erreur:

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

C'est là cependant:

$ 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. 

Autrefois, on pouvait simplement installer des bibliothèques 32 bits sur Ubuntu 64 bits pour obtenir une prise en charge 32 bits, mais cela ne semble plus fonctionner.

Comment exécuter des applications 32 bits sur un Ubuntu 14.04 64 bits?

126
Thomas Stuefe

Pour exécuter un fichier exécutable 32 bits sur un système Ubuntu multi-architecture 64 bits, vous devez ajouter l'architecture i386 et installer les trois packages de bibliothèque libc6:i386, libncurses5:i386 et libstdc++6:i386:

Sudo dpkg --add-architecture i386

Ou si vous utilisez Ubuntu 12.04 LTS (Precise Pangolin) ou une version antérieure, utilisez ceci:

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

Ensuite:

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

Si échoue, faites aussi

Sudo apt-get install multiarch-support

Après ces étapes, vous devriez pouvoir exécuter l'application 32 bits:

./example32bitprogram
177
Avinash Raj

"Aucun fichier ou répertoire de ce type" peut apparaître lorsque vous avez votre binaire, mais il manque certaines bibliothèques. Si vous installez le package build-essential, la commande lddsera disponible. Cette commande ldd ./adb | grep not vous montrera quelles bibliothèques sont manquantes. Il suffit d'installer ces bibliothèques dans i386 Arch avec apt. Comme ceci: apt-get install libmissing:i386 Attention, certains paquets bogués tenteront de supprimer les sapins de version 64 bits.

9
Barafu Albino

Et si vous voulez utiliser "adb", il existe un paquet pour cela:

Sudo apt-get install Android-tools-adb

Et à propos des bibliothèques 32 bits - seulement:

Sudo apt-add-architecture i386

sera suffisant.

5
aastefanov

En plus de l'excellente réponse de Zanna et Avinash Raj, j'ai également dû installer gcc-multilib:

Sudo apt-get install gcc-multilib

C'est peut-être parce que je voulais exécuter une ancienne version de gcc sur 64 bits.

3
user2144067