Мне нужен конкретный инструмент командной строки, и я создал C-программу в своей оболочке Linux. Я скомпилировал программу с помощью кросс-компилятора ARM. Затем я переместил программу в файловую систему Android и попытался запустить ее.
Выход запрещен.
Что мне нужно сделать, чтобы запускать свои собственные скомпилированные программы в файловой системе Android?
chmod +x pgm
а потом./pgm
еще?noexec
флагом. Вам нужно либо переместить его во внутреннюю память телефона, либо запустить его через оболочку (напримерsh /path/to/myexecutable
).Ответы:
Я предполагаю, что вы использовали adb push для загрузки вашего исполняемого файла на SD-карту. К сожалению, SD-карта всегда монтируется с «noexec», что означает, что вы не можете ничего выполнить отсюда.
Поэтому вы должны скопировать исполняемый файл в локальную файловую систему, например, в / data / local. Если устройство не имеет root-прав или у вас не установлен BusyBox, команда "cp" не будет. Вы можете просто использовать кошку:
cat /sdcard/myprog > /data/local/myprog
.Затем вы должны установить разрешение для исполняемого файла. Chmod на Android обычно не поддерживает синтаксис "u + x". Поэтому вы должны позвонить
chmod 555 /data/local/myprog
.После этого вы можете выполнить свой исполняемый файл:
/data/local/myprog
.источник
tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directory
хотя файл присутствуетВо-первых, вы должны поместить его в каталог, например
/data/local/tmp
. Затем вы должны установить разрешение для этого использованияchmod 755 executable
. После этого вы можете запустить его как./executable
.Выполните следующие шаги:
В качестве альтернативы, если вы хотите запустить его из папки активов, вам необходимо скопировать файл в папку данных
/data/data/packagename/
. Затем с помощьюFile
класса установитеsetExecutable
флагtrue
для файла и запустите его с помощью класса Process или сторонних пакетов, таких как Root Tools .источник