Eu preciso de uma ferramenta de linha de comando específica e criei um programa C no meu shell Linux. Eu compilei o programa com um compilador cruzado ARM. Em seguida, mudei o programa para o sistema de arquivos Android e tentei executá-lo.
A saída é permissão negada.
O que preciso fazer para executar meus próprios programas compilados no sistema de arquivos Android?
chmod +x pgm
e depois./pgm
também?noexec
bandeira. Você precisa movê-lo para o armazenamento interno do telefone ou executá-lo através de um shell (por exemplosh /path/to/myexecutable
).Respostas:
Suponho que você tenha usado o adb push para enviar o seu executável para o cartão SD. Infelizmente, o cartão SD é sempre montado com "noexec", o que significa que você não pode executar nada a partir daqui.
Portanto, você deve copiar o executável para o sistema de arquivos local, por exemplo, para / data / local. Caso o dispositivo não esteja enraizado ou você não tenha o BusyBox instalado, não haverá comando "cp". Você pode simplesmente usar gato:
cat /sdcard/myprog > /data/local/myprog
.Então você deve definir a permissão do executável no executável. O Chmod no Android geralmente não suporta a sintaxe "u + x". Portanto, você tem que ligar
chmod 555 /data/local/myprog
.Depois, você pode executar seu executável:
/data/local/myprog
.fonte
tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directory
que o arquivo está presentePrimeiro, você deve colocá-lo em um diretório, como
/data/local/tmp
. Então, você deve definir permissão para issochmod 755 executable
. Depois disso, você pode executá-lo como./executable
.As etapas completas são as seguintes:
Como alternativa, se você quiser executá-lo na sua pasta de ativos, precisará copiar o arquivo para sua pasta de dados
/data/data/packagename/
. Em seguida, usando aFile
classe, defina osetExecutable
sinalizador comotrue
para o arquivo e execute-o pela classe Process ou por pacotes de terceiros como o Root Tools .fonte