Ich habe Ubuntu 14.04 und das aktuelle Android-Entwicklungs-SDK installiert, das ausführbare 32-Bit-Dateien enthält. Ich habe festgestellt, dass ich diese 32-Bit-Binärdateien nicht ausführen kann. Der Versuch, sie von der Bash aus zu starten, gibt mir einen Fehler:
$ ./adb
bash: ./adb: No such file or directory
Es ist jedoch da:
$ 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.
Früher konnte man 32-Bit-Bibliotheken auf 64-Bit-Ubuntu installieren, um 32-Bit-Unterstützung zu erhalten, aber das scheint nicht mehr zu funktionieren.
Wie kann ich 32-Bit-Apps auf einem 64-Bit-Ubuntu 14.04 ausführen?
Antworten:
Um eine 32-Bit - ausführbare Datei auf einem 64-Bit Multi-Architektur Ubuntu - System ausführen, müssen Sie die Add -
i386
Architektur und installieren Sie die drei Bibliothekspaketelibc6:i386
,libncurses5:i386
undlibstdc++6:i386
:Wenn Sie Ubuntu 12.04 LTS (Precise Pangolin) oder niedriger verwenden, verwenden Sie Folgendes:
Dann:
Wenn dies fehlschlägt, tun Sie dies auch
Nach diesen Schritten sollten Sie in der Lage sein, die 32-Bit-Anwendung auszuführen:
quelle
lib32z1
, bemerkte aber, dass es in libc6-i386 gezogen wurde (Unterscheidung, beachte den Bindestrich, nicht den Doppelpunkt).libc6:i386
,libncurses5:i386
,libstdc++6:i386
sind neueste Version und auf manuell installiert. Aber danach heißt es: "Soma packages could not be installed.This may mean you have requested impossible situation or you are using unstable distribution ...
" und nicht erfüllte Abhängigkeiten:libstdc++6-4.4-dev:i386
abhängigg++-4.4:i386
(wird nicht installiert). Konflikte:libstdc++6-4.4-dbg:i386
... und andere Konflikte umlibstdc++6-4.4/6/7
etc. Was ist falsch oder soll ich es so lassen, wie es jetzt ist?"Keine solche Datei oder Verzeichnis" erscheint möglicherweise, wenn Sie Ihre Binärdatei haben, aber es fehlen einige Bibliotheken. Wenn Sie das
build-essential
Paket installieren , steht Ihnen einldd
Befehl zur Verfügung. Dieser Befehlldd ./adb | grep not
zeigt Ihnen, welche Bibliotheken fehlen. Installieren Sie diese Bibliotheken einfach in i386 arch mit apt. So:apt-get install libmissing:i386
Vorsicht, einige Buggy-Pakete versuchen, 64-Bit-Versionen zu löschen.quelle
Und wenn Sie "adb" verwenden möchten, gibt es ein Paket dafür:
Und etwa 32-Bit-Bibliotheken - nur:
wird genug sein.
quelle
Zusätzlich zu der hervorragenden Antwort von Zanna und Avinash Raj musste ich auch gcc-multilib installieren:
Möglicherweise liegt das daran, dass ich eine alte gcc-Version auf 64bit ausführen wollte.
quelle