2012-06-28 16 views
9

Używam ArchLinux, jądro 3.4.4, bash w wersji 4.2.29. Pobrałem plik SDK dla Androida: http://developer.android.com/sdk/index.htmlBash nie może znaleźć adb, chociaż na pewno jest tam

Raz wyodrębniony zrobiłem, zrobiłem ~/android-sdk-linux/tools/android i zainstalowałem pakiet narzędzi platformy SDK.

Stamtąd Próbowałem następujące:

> ls -l ~/android-sdk-linux/platform-tools/adb 
-rwxr-xr-x 1 mediocregopher mediocregopher 204436 Jun 28 13:20 /home/mediocregopher/android-sdk-linux/platform-tools/adb 

> file ~/android-sdk-linux/platform-tools/adb 
/home/mediocregopher/android-sdk-linux/platform-tools/adb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped 

> ~/android-sdk-linux/platform-tools/adb 
bash: /home/mediocregopher/android-sdk-linux/platform-tools/adb: No such file or directory 

Oczywiście plik istnieje i przynajmniej wykonywalny, dlaczego nie mogą bash wydają się go znaleźć? Próbowałem dodać folder platformy narzędzi do mojej ścieżki, jak również sudo i su-ing, ale bez względu na to, co wydaje się, jak plik nie zostanie znaleziony. Czy ktoś wie, co może się dziać?

Odpowiedz

17

Używasz systemu 64-bitowego i nie masz zainstalowanych 32-bitowych bibliotek zgodności.

Błąd jest spowodowany faktem, że nie może znaleźć 32-bitowego ld.so.

Jeśli używasz ubuntu/debian, myślę, że po prostu musisz sudo apt-get install ia32-libs i powinno działać.

+0

+1 Jest to znacznie mniej popularny powód ENOENT z [execve (2)] (http://www.kernel.org/doc/man-pages/online/pages/man2/execve.2.html) – pilcrow

+1

To okazało się problemem. Znalazłem android-sdk w AUR Archa, ale nie mogłem go zainstalować, ponieważ potrzebował pakietu pakietów lib32- *. Okazuje się, że wystarczy włączyć repozytorium multilib. Dziękuję za skierowanie mnie we właściwą stronę :) –

+1

[Instalowanie Androida SDK] (http://developer.android.com/sdk/installing/index.html?pkg=tools) wyjaśnia to w sekcji "Rozwiązywanie problemów z Ubuntu". – reergymerej

9

W przypadku "nowoczesnych" wersji Ubuntu (13.10 i wyżej), zaakceptowana odpowiedź przestała działać: usunęły "biblioteki kompilacji" 32-bitowe, a zamiast tego trzeba użyć pakietów wieloarchitektonicznych, które szczęśliwie współistnieją obok siebie. Zobacz What happened to the ia32-libs package? na AskUbuntu.

Zamiast tego trzeba zainstalować wersję 32 bitową libc:

sudo apt-get install libc6:i386 

Następnie ja encounterd że również wymagana jest wersja 32 bitowa libstdc++ przez adb:

sudo apt-get install libstdc++6:i386 

Teraz adb powinien pracować (znowu).

Android SDK on a 64-bit linux machine pokazuje, że niektóre inne biblioteki są również wymagane. Nie potrzebowałem ich również, ale mogłem już je zainstalować.

+0

+1, to rozwiązanie pomogło mi też zainstalować Anacondę 32-bitową w systemie 64-bitowym –