Necesito una herramienta de línea de comandos específica y he creado un programa en C en mi shell de Linux. He compilado el programa con un compilador cruzado ARM. Luego moví el programa al sistema de archivos de Android e intenté ejecutarlo.
La salida es permiso denegado.
¿Qué debo hacer para ejecutar mis propios programas compilados en el sistema de archivos de Android?
chmod +x pgm
y luego./pgm
también?noexec
bandera. Debe moverlo al almacenamiento interno del teléfono o ejecutarlo a través de un shell (por ejemplosh /path/to/myexecutable
).Respuestas:
Supongo que usó adb push para cargar su ejecutable en la tarjeta SD. Lamentablemente, la tarjeta SD siempre está montada con "noexec", lo que significa que no puede ejecutar nada desde aquí.
Por lo tanto, debe copiar el ejecutable en el sistema de archivos local, por ejemplo, a / data / local. En caso de que el dispositivo no esté rooteado o no tenga instalado BusyBox, no habrá un comando "cp". Simplemente puedes usar cat:
cat /sdcard/myprog > /data/local/myprog
.Luego debe establecer el permiso ejecutable en el ejecutable. Chmod en Android generalmente no admite la sintaxis "u + x". Por eso tienes que llamar
chmod 555 /data/local/myprog
.Después se puede ejecutar el ejecutable:
/data/local/myprog
.fuente
tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directory
aunque el archivo está presentePrimero, debe insertarlo en un directorio, como
/data/local/tmp
. Luego, debe establecer el permiso para ese usochmod 755 executable
. Después de eso, puedes ejecutarlo como./executable
.Los pasos completos son los siguientes:
Alternativamente, si desea ejecutarlo desde su carpeta de activos, debe copiar el archivo a su carpeta de datos
/data/data/packagename/
. Luego, usando laFile
clase, establezca elsetExecutable
indicadortrue
para el archivo y ejecútelo por la clase de proceso o paquetes de terceros como Root Tools .fuente