Вопрос по android, shell – Как запустить приложение C ++ в Android SHELL

10

Я хочу бежатьhello world написанный на C ++ и скомпилированный сAndroid toolchain 9, но я столкнулся с проблемой: по умолчанию у меня нет прав на запуск, и я не могу изменить разрешения с помощью chmod`.

я использовалAndroid 2.3.3 - Api Level 10

Приложение было скомпилировано кросс-компилятором дляAPI level 9

Процедура:

Скомпилируйте приложение:

~/toolchain_andr9/bin/ arm-linux-androideabi-g++ helloworld.cpp

Затем отправьте заявку на SDCARD на эмуляторе:

>adb push a.out /mnt/sdcard

затем перейдите в SHELL и попробуйте запуститьa.out:

>adb shell
> 
>/mnt/sdcard/a.out

И результат:

>`/mnt/sdcard/a.out: permission denied`

командаls -l показывает права наa.out:

>`----rwxr-x system   sdcard_rw   863656 2012-04-12 22:42 a.out`

Я пытался изменить разрешения:

>chmod 777 /mnt/sdcard/a.out

Но права не меняются:

>`----rwxr-x system   sdcard_rw   863656 2012-04-12 22:42 a.out`

Я думаю, что я оставил некоторые важные вещи с помощью Android.

Кто-нибудь может мне помочь и подсказать, как запустить приложение в Android SHELL?

Большое спасибо.

Постскриптум простите за мой английский =)

У тебя есть рут? & # X411; & # Фон X435; & # x437; & # X440; & # x443; & # x442; & # X430; & # X43C; & # x43E; & # x436; & # Фон X435; & # x442; & # X43D; & # Фон X435; & # X432; & # x44B; & # x439; & # x442; & # x438; & # X444; & # x43E; & # x43A; & # x443; & # X441 ;:gimite.net/en/… user405725
попробуйте поместить ваш файл в / data / local там вы сможете chmod свой файл mgiza

Ваш Ответ

2   ответа
4

mount -o remount,rw /mnt/sdcard и это должно бежать.

Я пробовал это на моем Android.

Это работает? Кто-нибудь еще это пробовал? Убирает ли бит флаг noexec? Sdcard перемонтируется при перезагрузке? Я перепутал с форматом (vfat & gt; ext2), и это очень поразило Android. Пришлось использоватьnewfs_msdos чтобы исправить это, поэтому я не решаюсь связываться с SDCard.
офигенно, это полностью работает, просто удаляетnosuid, nodev, noexec флаги!
@MarkMikofski Это не переживает перезагрузку, иsdcard монтируется нормально при перезагрузке.
13

noexec, который запрещает выполнение любого файла на карте, независимо от того, какие у него разрешения (даже-rwxrwxrwx), поэтому вам нужно переместить файл в другое место, а затем выполнить его.

Самый простой - переместить файл в/data/local/tmp/ и выполнить его, используя полный путь (обычная семантика POSIX PATH).

> adb push a.out /data/local/tmp/a.out
> adb shell
> chmod 755 /data/local/tmp/a.out
> /data/local/tmp/a.out

этоdoes not требоватьroot access а такжеsurvives reboot.

Похожие вопросы