¿Cómo ejecuto un binario compilado en Android?

He estado tratando de ejecutar un compilado binario en mi teléfono Android, pero sólo sigue diciéndome "No tal archivo o directorio".

Para ser específico, he compilado wificurse , y como la descripción tiene mención a un comando de brazo es obvio que el código fuente se puede compilar para una arquitectura de brazo sin hacer ningún cambio en el makefile. Y así hice lo siguiente:

export CROSS_COMPILE=arm-linux-gnueabi- make CROSS_COMPILE=arm-linux-gnueabi- 

Y luego con el binario resultante (wificurse) hice lo siguiente:

 adb push wificurse /data 

En una raíz adb shell lo hice:

  root@android:/data # chmod 0777 wificurse 

No devuelve nada; trabajos.

  root@android:/data # chmod u+x wificurse 

Devuelve "Modo incorrecto".

  root@android:/data # busybox chmod 077 wificurse 

No devuelve nada; trabajos.

  root@android:/data # busybox chmod u+x wificurse 

No devuelve nada; trabajos.

Pero cuando intento ejecutar el binario con

  root@android:/data # ./wificurse 

Devuelve "/ system / bin / sh: ./wificurse: No existe tal archivo o directorio". Hizo un ls en la carpeta y el binario está realmente allí.

Ya intentó copiar el binario en el sdcard interno, luego moviéndose a / data (incluso intentó / system / bin y / system / xbin) y devuelve "Access denied", pero si chmod el binario devolverá el mismo error (No Tal archivo o directorio). ¿Podría alguien ayudarme, por favor? He utilizado el shell linux para 2 + años, aunque soy completamente un noob cuando se trata de programación de cosas. Supongo que estoy perdiendo algo como una cadena de herramientas, no lo sé.
Estoy ejecutando Ubuntu 15.10 x64.

¿Has probado los métodos en este hilo? "Ningún archivo o directorio" que intenta ejecutar linux binario en el dispositivo Android

Una forma alternativa de resolver este problema sería instalar KBOX en Android. El autor ha desarrollado herramientas como gcc, servidor ssh para la plataforma Android. Por lo tanto, puede iniciar un servidor ssh en su teléfono y hacer todo su trabajo en su PC, lo que significa que puede compilar su código directamente en el teléfono 🙂

Aparentemente, su binario depende de alguna biblioteca compartida (.so) que no sea visible para la vinculación dinámica. Usted puede usar readelf de su toolchain y usted consigue algo como esto:

 tom@pc:~/workspace/test/arm-v7a_android9/release$ ~/toolchains/armeabiv7a_android-9_ndk-r10e_gcc-4.9/bin/arm-linux-androideabi-readelf -d test Dynamic section at offset 0x445a14 contains 27 entries: Tag Type Name/Value 0x00000003 (PLTGOT) 0x44fc50 0x00000002 (PLTRELSZ) 1864 (bytes) 0x00000017 (JMPREL) 0x74d24 0x00000014 (PLTREL) REL 0x00000011 (REL) 0x74cd4 0x00000012 (RELSZ) 80 (bytes) 0x00000013 (RELENT) 8 (bytes) 0x00000015 (DEBUG) 0x0 0x00000006 (SYMTAB) 0x8148 0x0000000b (SYMENT) 16 (bytes) 0x00000005 (STRTAB) 0x26718 0x0000000a (STRSZ) 273460 (bytes) 0x00000004 (HASH) 0x6934c 0x00000001 (NEEDED) Shared library: [liblog.so] 0x00000001 (NEEDED) Shared library: [libm.so] 0x00000001 (NEEDED) Shared library: [libc.so] 0x00000001 (NEEDED) Shared library: [libdl.so] 0x0000001a (FINI_ARRAY) 0x447cb8 0x0000001c (FINI_ARRAYSZ) 12 (bytes) 0x00000019 (INIT_ARRAY) 0x447cc4 0x0000001b (INIT_ARRAYSZ) 324 (bytes) 0x00000020 (PREINIT_ARRAY) 0x447e08 0x00000021 (PREINIT_ARRAYSZ) 0x8 0x0000001e (FLAGS) BIND_NOW 0x6ffffffb (FLAGS_1) Flags: NOW 0x00000000 (NULL) 0x0 

Compruebe que todas las bibliotecas con el tipo (NEEDED) están en su dispositivo Android y son visibles para su binario (debe utilizar la export LD_LIBRARY_PATH=<path>[:<another_path>[..]] . binario).

Si el problema aún no se resuelve, su aplicación está vinculada a una versión diferente de alguna biblioteca del sistema. Intente utilizar una cadena de herramientas más antigua.

  • Cómo obtener salida de los comandos de busybox en la aplicación de Android
  • ¿Cuál es el comando para listar los avdnames disponibles
  • ¿Cómo puedo ejecutar la aplicación de cámara Android desde el shell de adb?
  • ¿Es posible iniciar la actividad a través de adb shell y recibir su respuesta?
  • FFMPEG para Android en Windows no se compila correctamente
  • C ++ Command Line Aplicaciones en Android?
  • Comandos ADB de Android para obtener las propiedades del dispositivo
  • ¿Cómo ejecutar la aplicación del sistema android sin autorización de la raíz?
  • Android: cómo ejecutar un comando de shell desde dentro del código
  • ADB Shell que da el modo incorrecto al ejecutar chmod (bajo su)
  • Múltiples comandos a través de Jsch Shell
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.