He compilado un binario en Linux usando el toochain de arm. He subido el binario a un teléfono andnroid no rooteado.
¿Qué tengo que hacer para ejecutar este binario en el teléfono no rooteado?
EDIT: He intentado ejecutar a través de emulador de terminal, pero me sale el siguiente error.
$ pwd
/mnt/sdcard/external_sd
$ ls -l hello
-rwxrwxr-x system sdcard_rw 8420 2013-12-31 22:12 hello
$ ./hello
./hello: permission denied
$
0 votos
Supongo que podrías instalar un emulador de terminal, navegar hasta el binario y utilizar
./binary
para invocarlo. Asegurándose de que los permisos están correctamente configurados, por supuesto.1 votos
He intentado esto, pero el archivo no es ejecutable en sdcard, he intentado chmod +x, pero no hace nada. Intenté copiar el binario a la carpeta /data del teléfono, pero obtuve un error de permiso. ¿Cómo puedo ejecutarlo?
0 votos
¿Puede usted editar su pregunta y dénos la salida de
ls -l [file]
? No podrás mover nada a/data/
porque es propiedad deroot
.0 votos
Comprobar mi edición de arriba
2 votos
Sdcard es probablemente (por lo general) FAT32/exFat, por lo que no tiene sistema de permisos de Linux, que es la razón por la que no se puede ejecutar o
chmod
nada en él. Yo intentaría encontrar una partición "rw" usandomount
(por ejemplo/cache
) y tratando de ejecutar a partir de ahí.0 votos
Como se mencionó anteriormente, traté de copiar a /data (montado rw), pero todavía me da error de permiso denegado, lo mismo con /cache.
0 votos
Pruebe
sh hello
en el mismo directorio que su ejecutable. Eso funciona incluso en SDcard.0 votos
Sh es para ejecutar scripts de shell, ¿verdad? no para ejecutar binarios compilados, ¿verdad? De todos modos, me da ""hola:1:Error de sintaxis: palabra inesperada (esperando")")", porque está esperando un archivo de guión de texto de shell, no un binario.
0 votos
Bueno, podría ser un poco difícil crear una pequeña envoltura de shell script :) OK, así que un poco más detallado:
echo "./hello" > hey && sh hey
lo hará. IOW: primero crear un script de shell que no hace nada más que ejecutar el binario, y luego dejar quesh
ejecuta ese script de shell. Lo siento, pensé que estaba claro - obviamente yo era un poco críptico ;)0 votos
Me da : "hey: ./hello: permiso denegado".
0 votos
@Izzy, Aunque
sh
puede ejecutar el script, ¿lo que ejecuta a su vez no tiene que seguir teniendo los permisos adecuados?0 votos
/data/local
debería poder escribirse normalmente, aunque otras partes de/data
no lo son. Intenta mover el binario allí, marcándolo como ejecutable conchmod
(si es necesario) y, a continuación, ejecutarlo.0 votos
Intenté copiar "cp hola /data/local", me dio "cp:/data/local/hola: Permiso denegado".
0 votos
@dotVezz No necesariamente. No lo he probado con un binario recientemente (así que puede que tengas razón en eso), pero los scripts de shell no necesitan ser ejecutables cuando se pasan como argumento a
sh
. aseaudi: Ese error es extraño. ¿Puedes hacer unls -l /data/local
(para ver si el archivo ya existe, pero pertenece a un usuario diferente)?0 votos
@Izzy, "ls -l /data/local" me da "opendir failed, Permission denied"
0 votos
Culpa mía,
/data/local
es propiedad desystem:system
y no legible a nivel mundial. Pero a menos que un problema similar permiso existe allí también,ls /data/local/hello
debería funcionar. Si es así, compruébelo también conid
para ver si el usuario coincide.