Je dois exécuter un configure
fichier sur mon téléphone Android, donc je pense que la meilleure façon de le faire est d'utiliser la adb shell
commande.
J'exécute un émulateur Android sur une plate-forme Windows-7, et là j'exécute la adb shell
commande dans une fenêtre DOS. En utilisant la cd
commande que je change le répertoire où mon configure
fichier, puis j'exécutant la commande suivante: ./configure
. J'obtiens l'erreur suivante:
./configure: permission denied
J'essaie donc d'exécuter adb en mode root avec adb root
- mais apparemment mon adb est déjà en mode root (De plus j'ai le caractère "#" devant chaque ligne de mon shell adb).
J'ai également essayé d'utiliser chmod
mais je ne vois aucune différence avant et après l'exécution de cette commande ( ls -la
), donc peut-être que le problème est là (comment puis-je exécuter la chmod
commande?).
Peut-être que quelqu'un ici peut m'aider avec mon problème, et si vous avez également une explication sur la raison pour laquelle je n'ai pas la permission d'exécuter mon configure
fichier, ce sera génial.
Merci.
PS: Mon objectif ici est d'utiliser le package net-snmp sur une plateforme Android en compilant les sources de ce projet directement sur la plateforme.
/sdcard
est généralement monté avec l'noexec
indicateur dans Android, vous ne pouvez donc pas exécuter de binaires à partir de celui-ci. Je recommanderais d'essayer de le déplacer ailleurs (souvent/data/local
utilisé pour des choses comme ça). Voyez si cela résout le problème./usr/local/tmp
répertoire (lenet-snmp-5.7.2
répertoire entier en/sdcard
.Réponses:
Cela est dû à 2 choses:
noexec
indicateur, comme indiqué dans un commentaire. Cela empêche l'exécution des fichiers.Solution:
net-snmp-5.7.2
répertoire dans le/data/local/tmp
répertoire en tant que root.configure
fichier pour qu'il soit exécutable en exécutant enchmod 0777 /data/local/tmp/net-snmp-5.7.2/configure
tant que root./data/local/tmp/net-snmp-5.7.2/configure
et en appuyant sur Entrée.Remarque
Tout cela devrait être fait en tant qu'utilisateur root :)
la source
Comme expliqué par les commentaires et la réponse de Liam , cela est dû au
noexec
drapeau utilisé par le système lors du montage de la carte SD. Si votreconfigure
fichier est un script shell (comme c'est généralement le cas), vous pouvez toujours le tromper pour qu'il soit exécuté:cd
dans le répertoire comme décrit ci-dessus, puis exécutezsh configure
.sh
est l'interpréteur Shell, et ce binaire doit être situé dans/system/bin
, où les fichiers sont exécutables. En passant votre script comme premier argument, cela ouvrira un nouveau processus shell qui exécute votreconfigure
script.la source
sh configure
fait l'affaire.