2012-06-28 7 views
9

Я запускаю ArchLinux, kernel 3.4.4, bash version 4.2.29. Я загрузил android sdk отсюда: http://developer.android.com/sdk/index.htmlBash не может найти adb, хотя он определенно существует

После извлечения я сделал, сделал ~/android-sdk-linux/tools/android и установил пакет инструментов платформы SDK.

Оттуда я попытался следующие:

> 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 

Очевидно, что файл существует и по крайней мере, исполняемый файл, то почему не может Баш показаться, чтобы найти его? Я попытался добавить папку платформы-инструментов на свой путь, а также sudo и su-ing, но независимо от того, что кажется, что файл не найден. Кто-нибудь знает, что может произойти?

ответ

17

Вы работаете на 64-битной системе, и у вас нет 32-разрядных библиотек совместимости.

Ошибка на самом деле происходит из-за того, что она не может найти 32-разрядную ld.so.

Если вы используете ubuntu/debian, я думаю, вам просто нужно sudo apt-get install ia32-libs, и он должен работать.

+0

+1 Это гораздо менее распространенная причина для ENOENT от [execve (2)] (http://www.kernel.org/doc/man-pages/online/pages/man2/execve.2.html) – pilcrow

+1

Это оказалось проблемой. Я нашел android-sdk в AUR арки, но не смог установить его, потому что ему понадобилось множество пакетов lib32- *. Оказывается, мне просто нужно было включить multilib repo. Спасибо, что указали мне в правильном направлении :) –

+1

[Установка Android SDK] (http://developer.android.com/sdk/installing/index.html?pkg=tools) объясняет это в разделе «Устранение неполадок Ubuntu». – reergymerej

9

Для «современных» версий Ubuntu (13.10 и выше) принятый ответ больше не работает: они удалили библиотеки совместимости «32 бит», и вместо этого вам нужно использовать пакеты многоархивов, которые счастливо сосуществуют рядом друг с другом. См. What happened to the ia32-libs package? на AskUbuntu.

Вместо этого вам нужно установить 32 битную версию libc:

sudo apt-get install libc6:i386 

Далее я encounterd, что 32 битная версия libstdc++ также требуется adb:

sudo apt-get install libstdc++6:i386 

Теперь adb должен работать (снова).

Android SDK on a 64-bit linux machine показывает, что некоторые другие библиотеки также необходимы. Я тоже не нуждался в них, но, возможно, они уже были установлены.

+0

+1 Это решение также помогло мне установить Anaconda 32bit на 64-битную систему –

Смежные вопросы