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?
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
"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 ldd
sera 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.
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.
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.