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

105

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 binaires 32 bits. Essayer de les démarrer depuis bash me donne une erreur:

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

Il est là si:

$ 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 installer des bibliothèques 32 bits sur Ubuntu 64 bits pour obtenir un support 32 bits, mais cela ne semble plus fonctionner.

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

    
posée Thomas Stuefe 24.04.2014 - 09:29
la source

4 réponses

159

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 inférieur, utilisez ceci:

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

Alors:

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
    
réponse donnée Avinash Raj 24.04.2014 - 09:31
la source
6

"Aucun fichier ou répertoire de ce type" peut apparaître lorsque vous avez votre fichier binaire, mais il manque certaines bibliothèques. Si vous installez build-essential package, vous aurez la commande ldd disponible. Cette commande ldd ./adb | grep not vous montrera les bibliothèques manquantes. Installez simplement ces bibliothèques dans l'archive i386 avec apt. Comme ceci: apt-get install libmissing:i386 Attention, certains paquets buggés vont essayer de supprimer les versions 64 bits.

    
réponse donnée Barafu Albino 24.04.2014 - 10:44
la source
4

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

sudo apt-get install android-tools-adb

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

sudo apt-add-architecture i386

suffira.

    
réponse donnée aastefanov 24.04.2014 - 14:29
la source
2

Outre 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 lancer une ancienne version de gcc sur 64 bits.

    
réponse donnée user2144067 04.09.2017 - 15:52
la source

Lire d'autres questions sur les étiquettes