Ich benötige ein bestimmtes Kommandozeilen-Tool und habe in meiner Linux-Shell ein C-Programm erstellt. Ich habe das Programm mit einem ARM-Cross-Compiler kompiliert. Ich habe dann das Programm in das Android-Dateisystem verschoben und versucht, es auszuführen.
Die Ausgabe ist die Berechtigung verweigert.
Was muss ich tun, um meine eigenen kompilierten Programme im Android-Dateisystem auszuführen?
chmod +x pgm
und dann./pgm
auch noch?noexec
Flagge montiert ist . Sie müssen es entweder in den internen Speicher des Telefons verschieben oder über eine Shell (zsh /path/to/myexecutable
. B. ) ausführen .Antworten:
Ich gehe davon aus, dass Sie adb push zum Hochladen Ihrer ausführbaren Datei auf die SD-Karte verwendet haben. Leider ist die SD-Karte immer mit "noexec" gemountet, was bedeutet, dass Sie von hier aus nichts ausführen können.
Daher müssen Sie die ausführbare Datei in das lokale Dateisystem kopieren, z. B. nach / data / local. Falls das Gerät nicht gerootet ist oder Sie keine BusyBox installiert haben, wird kein "cp" -Befehl ausgegeben. Sie können einfach cat: verwenden
cat /sdcard/myprog > /data/local/myprog
.Dann müssen Sie die ausführbare Berechtigung für die ausführbare Datei festlegen. Chmod auf Android unterstützt normalerweise nicht die "u + x" -Syntax. Deshalb musst du anrufen
chmod 555 /data/local/myprog
.Danach können Sie die ausführbare Datei ausführen:
/data/local/myprog
.quelle
tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directory
Obwohl die Datei vorhanden istZuerst müssen Sie es in ein Verzeichnis verschieben, z
/data/local/tmp
. Dann müssen Sie die Berechtigung für diese Verwendung festlegenchmod 755 executable
. Danach können Sie es als ausführen./executable
.Die vollständigen Schritte lauten wie folgt:
Wenn Sie es alternativ aus Ihrem Asset-Ordner ausführen möchten, müssen Sie die Datei in Ihren Datenordner kopieren
/data/data/packagename/
.File
Setzen Sie dann mithilfe von class dassetExecutable
Flagtrue
für die Datei und führen Sie sie durch die Process-Klasse oder Pakete von Drittanbietern wie Root Tools aus .quelle