Auch wenn der Dateimodus 0777
ist, Android erlaubt keine Dateien auf gemeinsam genutzten Speicher durch die Montage mit noexec
ausgeführt werden.
Wenn Sie
/system/bin/mount | grep /storage
laufen werden Sie so etwas wie dieses finden:
/data/media on /storage/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,low_uid=1023,low_gid=1023,gid=9997,multi_user,mask=0007,reserved=100MB)
^~~~~~
Die tatsächliche Einhängepunkt variieren kann (/storage/sdcard0
), aber es ist sicherlich mit noexec
montiert.
Sie sollten die ausführbare Datei in das Home-Verzeichnis von Termux (oder irgendwo in einen ext4-Mountpoint) verschieben, bevor Sie versuchen, es auszuführen. Das macht CppDroid. Es führt nur ausführbare Dateien im internen Speicher aus, obwohl der Quellcode irgendwo gespeichert werden kann.
Wenn Sie in Termux ausführen möchten, folgen Sie diese:
$ cp <your-program> ~/a.out
$ chmod 777 ~/a.out
$ ~/a.out
program output
$
Für die "Position unabhängig ausführbare Datei (PIE)" -Ausgabe, empfehle ich Ihnen klare Daten für CppDroid. Es verwendet GCC als Compiler, der -pie
Option erfordert, um PIE ausführbar zu generieren. Wenn Sie wissen, welche Einstellungen fehlerhaft sind, können Sie auch versuchen, es selbst zu beheben.
Der von Termux bereitgestellte Clang-Compiler erzeugt PIE-Executables standardmäßig.
Haben Sie die Berechtigung und den Besitzer von a.out überprüft? – klutt
@klutt Ich habe gerade ein anderes Bild hinzugefügt. Bitte pass auf dich auf. Ich verstehe die Erlaubnissymbole nicht. – Tangent
Es sieht so aus, als müssten Sie root sein, um es auszuführen. – klutt