J'ai besoin d'un outil de ligne de commande spécifique et j'ai créé un programme C dans mon shell Linux. J'ai compilé le programme avec un compilateur croisé ARM. J'ai ensuite déplacé le programme dans le système de fichiers Android et essayé de l'exécuter.
La sortie est refusée.
Que dois-je faire pour exécuter mes propres programmes compilés dans le système de fichiers Android?
chmod +x pgm
et puis./pgm
aussi?noexec
drapeau. Vous devez soit le déplacer dans la mémoire interne du téléphone, soit l'exécuter via un shell (par exemplesh /path/to/myexecutable
).Réponses:
Je suppose que vous avez utilisé adb push pour télécharger votre exécutable sur la carte SD. Malheureusement, la carte SD est toujours montée avec "noexec" ce qui signifie que vous ne pouvez rien exécuter d'ici.
Par conséquent, vous devez copier l'exécutable dans le système de fichiers local, par exemple dans / data / local. Dans le cas où le périphérique n'est pas rooté ou si vous n'avez pas installé BusyBox, il n'y aura pas de commande "cp". Vous pouvez simplement utiliser cat:
cat /sdcard/myprog > /data/local/myprog
.Ensuite, vous devez définir l'autorisation exécutable sur l'exécutable. Chmod sur Android ne prend généralement pas en charge la syntaxe "u + x". Vous devez donc appeler
chmod 555 /data/local/myprog
.Ensuite , vous pouvez exécuter l' exécutable:
/data/local/myprog
.la source
tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directory
si le fichier est présentTout d'abord, vous devez le pousser dans un répertoire, tel que
/data/local/tmp
. Ensuite, vous devez définir l'autorisation pour cette utilisationchmod 755 executable
. Après cela, vous pouvez l'exécuter en tant que./executable
.Les étapes complètes sont les suivantes:
Alternativement, si vous souhaitez l'exécuter à partir de votre dossier de ressources, vous devez copier le fichier dans votre dossier de données
/data/data/packagename/
. Ensuite, en utilisantFile
class, définissez l'setExecutable
indicateur surtrue
pour le fichier et exécutez-le par la classe Process ou des packages tiers tels que Root Tools .la source