2012-06-28 31 views
9

Estoy ejecutando ArchLinux, kernel 3.4.4, versión 4.2.29 de bash. He descargado el SDK de Android desde aquí: http://developer.android.com/sdk/index.htmlBash no puede encontrar adb aunque definitivamente está allí

Una vez extraído lo hice, hice ~/android-sdk-linux/tools/android e instalado el paquete de herramientas de la plataforma SDK.

A partir de ahí he intentado lo siguiente:

> 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 

Es evidente que el archivo está ahí y por lo menos ejecutable, ¿por qué no puede parecer bash para encontrarlo? Intenté agregar la carpeta platform-tools a mi ruta, así como sudo y su-ing, pero no importa lo que parezca que no se encuentra el archivo. ¿Alguien sabe lo que podría estar pasando?

Respuesta

17

Estás ejecutando un sistema de 64 bits y no tienes instaladas las bibliotecas de compatibilidad de 32 bits.

El error proviene en realidad del hecho de que no puede encontrar el 32bit ld.so.

Si está utilizando ubuntu/debian, creo que solo necesita sudo apt-get install ia32-libs y debería funcionar.

+0

+1 Esta es la razón menos común para ENOENT de un [execve (2)] (http://www.kernel.org/doc/man-pages/online/pages/man2/execve.2.html) – pilcrow

+1

Esto terminó siendo el problema. Encontré android-sdk en el AUR de arch pero no pude conseguirlo porque necesitaba un paquete lib32- *. Resulta que solo necesitaba habilitar el Repos Multilib. Gracias por señalarme en la dirección correcta :) –

+1

[Instalación de Android SDK] (http://developer.android.com/sdk/installing/index.html?pkg=tools) explica esto en "Solución de problemas de Ubuntu". – reergymerej

9

Para las versiones 'modernas' de Ubuntu (13.10 y superior), la respuesta aceptada ya no funciona: eliminaron las bibliotecas de compatibilidad de '32 bit 'y en su lugar necesita utilizar paquetes multiarcas que coexisten uno al lado del otro. Ver What happened to the ia32-libs package? en AskUbuntu.

su lugar usted necesita para instalar la versión de 32 bits de libc:

sudo apt-get install libc6:i386 

A continuación, encounterd que también se requiere una versión de 32 bits de libstdc++ por adb:

sudo apt-get install libstdc++6:i386 

Ahora adb debe estar trabajando (nuevamente).

Android SDK on a 64-bit linux machine muestra que también se requieren algunas otras bibliotecas. No parecía necesitarlos también, pero podría haberlos instalado ya.

+0

+1, esta solución también me ayudó a instalar Anaconda 32 bits en un sistema de 64 bits –

Cuestiones relacionadas