Мне нужно запустить configure
файл на моем телефоне Android, поэтому я думаю, что лучший способ сделать это - использовать adb shell
команду.
Я запускаю эмулятор Android на платформе Windows-7 и запускаю adb shell
команду в окне DOS. С помощью cd
команды я меняющийся в каталог , где мой configure
файл находится, и тогда я , выполнив следующую команду: ./configure
. Я получаю следующую ошибку:
./configure: permission denied
Поэтому я пытаюсь запустить ADB в корневом режиме с adb root
- но, очевидно, мой ADB уже находится в корневом режиме (более того, у меня есть символ «#» перед каждой строкой моей оболочки ADB).
Я также пытался использовать, chmod
но я не вижу никакой разницы до и после выполнения этой команды ( ls -la
), поэтому, возможно, проблема здесь (Как я могу выполнить chmod
команду?).
Может быть, кто-то здесь может помочь мне с моей проблемой, и если у вас есть объяснение, почему у меня нет разрешения на запуск моего configure
файла, это будет здорово.
Спасибо.
PS: Моя цель здесь - использовать пакет net-snmp на платформе Android, скомпилировав исходники этого проекта непосредственно на платформу.
/sdcard
обычно монтируется сnoexec
флагом в Android, поэтому вы не можете запускать из него двоичные файлы. Я бы порекомендовал попробовать переместить его в другое место (часто/data/local
используется для подобных вещей). Посмотрим, решит ли это проблему./usr/local/tmp
каталог (весьnet-snmp-5.7.2
каталог в/sdcard
.Ответы:
Это связано с 2 вещами:
noexec
флагом, как указано в комментарии. Это останавливает выполнение файлов.Решение:
net-snmp-5.7.2
каталог в/data/local/tmp
каталог как root.configure
исполняемый файл, запустивchmod 0777 /data/local/tmp/net-snmp-5.7.2/configure
от имени пользователя root./data/local/tmp/net-snmp-5.7.2/configure
и нажав Enter.Запись
Все это должно быть сделано как пользователь root :)
источник
Как поясняется в комментариях и ответе Лиама , это происходит из-за
noexec
флага, используемого системой при монтировании SD-карты. Если вашconfigure
файл является сценарием оболочки (как обычно), вы все равно можете обмануть его для выполнения:cd
в каталог, как вы описали выше, а затем выполнитеsh configure
.sh
является интерпретатором Shell, и этот двоичный файл должен находиться там/system/bin
, где файлы являются исполняемыми. Передача вашего сценария в качестве первого аргумента, это откроет новый процесс оболочки, который выполняет вашconfigure
сценарий.источник
sh configure
делает трюк.