Bien que l'ensemble d'outils de développement Android (ADT) soit disponible sous forme de package zip pour «Linux 64 bits», il énonce les exigences suivantes :
Les distributions 64 bits doivent être capables d'exécuter des applications 32 bits.
Et en effet, le simple fait d'exécuter l'éclipse packagée sur un système Fedora 17 64 bits entraîne des erreurs, car il ne peut pas «trouver» plusieurs outils de développement, par exemple adb
ou aapt
:
Erreur lors de l'exécution de aapt: impossible d'exécuter le programme "/ home / juser / local / adt-bundle-linux / sdk / platform-tools / aapt": error = 2, No such file or directory: error = 2, No such file or directory
Le 'no such file' est trompeur car il est là (sous $ HOME / local):
adt-bundle-linux/sdk/platform-tools/aapt
Mais je ne peux pas l'exécuter sur le shell:
~/local $ ./adt-bundle-linux/sdk/platform-tools/aapt
zsh: no such file or directory: ./adt-bundle-linux/sdk/platform-tools/aapt
Regarder le fichier
$ file adt-bundle-linux/sdk/platform-tools/aapt
adt-bundle-linux/sdk/platform-tools/aapt: ELF 32-bit LSB executable, Intel 80386,
version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8,
not stripped
on voit que c'est un 32 binaire. Et il semble que mon système (actuellement) ne soit pas capable d'exécuter des applications 32 bits.
Comment puis-je changer cela? Comment créer un système Fedora 64 bits actuel capable d'exécuter des applications 32 bits?
(Bien sûr, on pourrait aussi se demander pourquoi quelqu'un finit par mettre des binaires 32 bits dans un paquet binaire appelé 'Linux 64 bits' ...)
Réponses:
En ce qui concerne eclipse ne pouvant pas trouver
adb
, etc., cela parce que sans les bibliothèques partagées 32 bits nécessaires pour les exécuter sur le système, elles ne sont pas exécutables.En ce qui concerne les bibliothèques 32 bits, la situation est assez simple: il vous suffit d'installer les bibliothèques 32 bits appropriées. Sur l'installation de fedora 17 64 bits que j'ai ici, les bibliothèques primaires 64 bits sont dans / usr / lib64 et les bibliothèques 32 bits facultatives sont dans / usr / lib. Donc, si j'appelle
ldd
sur sdk / platform-tools / adb:Notez qu'ils sont tous dans / lib, qui est un lien symbolique vers / usr / lib (pas / usr / lib64). Regardez:
Une bibliothèque C standard 32 bits. Ce que vous pouvez faire, c'est passer par les outils sdk 32 bits et vérifier pour voir avec quoi ils sont liés
ldd
. Je n'ai pas d'exemple sous la main, mais s'il manqueldd
quelque chose, quelque chose comme:Tout d'abord , pour que ldd fonctionne, vous aurez besoin du chargeur 32 bits fourni avec la glibc 32 bits (sans cela, ldd l'appellera un fichier non exécutable et ne vous dira rien):
C'est tronqué, mais le package x86_64 est ce que vous avez déjà; l'i686 est la version 32 bits. Il suffit donc d'installer cela.
Vous n'avez besoin d'aucun des packages 'devel', car rien n'est compilé. Au-delà de cela, des suppositions éclairées et
yum whatprovides
/yum search
devraient aider (en consultant la liste pour adb, il existe également des versions 32 bits de la bibliothèque C ++, ncurses, pthreads et quelques petites choses que je ne sais pas).Petit conseil sur l'utilisation
whatprovides
:;)
la source
ldd
. Pour la raison: je ne suis pas convaincu, faisant appelfile
à la version bundle desadb
écrans: exécutable ELF 32 bits LSB, Intel 80386 - rien à voir avec l'émulation ARM - et / usr / bin / adb (du package fedora android-tools) est actuellement disponible en tant qu'exécutable ELF 64 bits LSB, x86-64 .adt-bundle-linux/sdk/platform-tools/adb
il affiche «pas un exécutable dynamique». Concernant le PATH - ce n'est pas le problème - spécifier complètement le chemin par exemple./adt-bundle-linux/sdk/platform-tools/adb
dans un terminal ne fonctionne pas (résulte en 'zsh: aucun fichier ou répertoire [..]').Vous devez installer la glibc 32 bits:
Cela supprime le message trompeur «aucun fichier ou répertoire» lorsque vous essayez d'exécuter un binaire 32 bits. Avec cela, le système Fedora 64 bits est capable d'exécuter des binaires 32 bits.
Cela supprime également le message trompeur «pas un exécutable dynamique»
ldd
lors de l'appelldd
à un exécutable dynamique 32 bits.Maintenant, vous devez installer les bibliothèques 32 bits manquantes avec lesquelles les binaires
adt-bundle-linux/sdk/platform-tools
sont liés:C'est tout.
Contexte
Quelques informations sur la façon de dériver les noms de package ci-dessus. Par exemple, en regardant la sortie de
signifie que 2 bibliothèques sont toujours manquantes pour adb.
Pour chaque «non trouvé», nous devons rechercher le nom du package, par exemple:
Maintenant, nous prenons le nom de base du package et y ajoutons «.i686» pour obtenir la version 32 bits.
la source
glibc.i686
permetldd
de fonctionner correctement avec les binaires i386.Vous pouvez installer le package nécessaire avec:
la source