Zainstalowałem Ubuntu 14.04 i bieżący programisty SDK dla Androida, który zawiera 32-bitowe pliki wykonywalne. Odkryłem, że nie mogę uruchomić tych 32-bitowych plików binarnych. Próba uruchomienia ich z bash daje mi błąd:
$ ./adb
bash: ./adb: No such file or directory
Jest tam jednak:
$ 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.
W dawnych czasach można było po prostu zainstalować 32-bitowe biblioteki na 64-bitowym Ubuntu, aby uzyskać obsługę 32-bitową, ale wydaje się, że to już nie działa.
Jak uruchomić 32-bitowe aplikacje na 64-bitowym Ubuntu 14.04?
Odpowiedzi:
Aby uruchomić plik wykonywalny 32-bitowego na 64-bitowy multi-architektura systemu Ubuntu, trzeba dodać
i386
architekturę i zainstalować trzy pakiety bibliotecznelibc6:i386
,libncurses5:i386
orazlibstdc++6:i386
:Lub jeśli używasz Ubuntu 12.04 LTS (Precise Pangolin) lub niżej, użyj tego:
Następnie:
Jeśli się nie powiedzie, również
Po wykonaniu tych kroków powinieneś być w stanie uruchomić aplikację 32-bitową:
źródło
lib32z1
, ale zauważyłem, że ściągnął libc6-i386 (rozróżnienie, zauważ myślnik, a nie dwukropek).libc6:i386
,libncurses5:i386
,libstdc++6:i386
to najnowsza wersja i ustawić ręcznie zainstalowany. Ale potem mówi: „Soma packages could not be installed.This may mean you have requested impossible situation or you are using unstable distribution ...
” i niespełnione zależności:libstdc++6-4.4-dev:i386
zależyg++-4.4:i386
(nie zostanie zainstalowany). konflikty:libstdc++6-4.4-dbg:i386
... i inne konflikty dotyczącelibstdc++6-4.4/6/7
itp. Co jest nie tak, czy powinienem zostawić to, co jest teraz?„Brak takiego pliku lub katalogu” może pojawić się, gdy masz plik binarny, ale brakuje w nim niektórych bibliotek. Jeśli zainstalujesz
build-essential
pakiet, będziesz miećldd
dostępne polecenie. To polecenieldd ./adb | grep not
pokaże, jakich bibliotek brakuje. Wystarczy zainstalować te biblioteki w i386 arch za pomocą apt. W ten sposób:apt-get install libmissing:i386
Uwaga : niektóre błędne pakiety będą próbowały usunąć jodły w wersji 64-bitowej.źródło
A jeśli chcesz użyć „adb”, jest do tego pakiet:
Oraz o bibliotekach 32-bitowych - tylko:
to wystarczy.
źródło
Oprócz doskonałej odpowiedzi Zanny i Avinash Raj musiałem również zainstalować gcc-multilib:
Możliwe, że dlatego, że chciałem uruchomić starą wersję gcc na 64-bit.
źródło