Chạy thực thi riêng trên Android shell


14

Tôi cần một công cụ dòng lệnh cụ thể và tôi đã tạo một chương trình C trong trình bao Linux của mình. Tôi đã biên dịch chương trình với trình biên dịch chéo ARM. Sau đó tôi đã chuyển chương trình vào hệ thống tệp Android và cố gắng chạy nó.

Đầu ra là sự cho phép bị từ chối.

Tôi phải làm gì để chạy các chương trình được biên dịch của riêng mình trong hệ thống tệp Android?


Đã thử chmod +x pgmrồi ./pgmcòn gì?
ott--

8
Có thể bạn đã đặt nó trên thẻ sdcard của bạn - được gắn noexeccờ. Bạn cần phải di chuyển nó vào bộ nhớ trong của điện thoại hoặc chạy nó qua shell (ví dụ sh /path/to/myexecutable).
Izzy

Câu trả lời:


14

Tôi giả sử rằng bạn đã sử dụng adb đẩy để tải tệp thực thi của mình lên thẻ sd. Thật không may, thẻ sd luôn được gắn với "noexec" có nghĩa là bạn không thể thực hiện bất cứ điều gì từ đây.

Do đó, bạn phải sao chép tệp thực thi vào hệ thống tệp cục bộ, ví dụ: / data / local. Trong trường hợp thiết bị chưa được root hoặc bạn chưa cài đặt BusyBox, sẽ không có lệnh "cp". Bạn chỉ có thể sử dụng mèo : cat /sdcard/myprog > /data/local/myprog.

Sau đó, bạn phải thiết lập quyền thực thi trên thực thi. Chmod trên Android thường không hỗ trợ cú pháp "u + x". Do đó bạn phải gọi chmod 555 /data/local/myprog.

Sau đó, bạn có thể thực thi thực thi của mình : /data/local/myprog.


Thx cho câu trả lời của bạn. Trong thực tế, vấn đề là ở thế hệ nhị phân. Nó đã không được tạo ra một cách chính xác! ;)
Nuno Santos

Tôi có busybox trên thiết bị của mình, nhưng lệnh này: shell @ n200C: / $ busybox cp / Storage / default_st Storage / sda1 / ffmpeg / data / ------ show error = cp: không thể tạo '/ data / ffmpeg ': Quyền bị từ chối
Dr.jacky

tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directorymặc dù tập tin có mặt
Necktwi

9

Đầu tiên, bạn phải đẩy nó vào một thư mục, chẳng hạn như /data/local/tmp. Sau đó, bạn phải đặt quyền cho việc sử dụng đó chmod 755 executable. Sau đó, bạn có thể chạy nó như ./executable.

Hoàn thành các bước như sau:

adb đẩy thực thi / dữ liệu / cục bộ / tmp
vỏ adb
cd / dữ liệu / cục bộ / tmp
chmod 755 thực thi
./executable

Ngoài ra, nếu bạn muốn chạy nó từ thư mục tài sản của mình, bạn phải sao chép tệp vào thư mục dữ liệu của mình /data/data/packagename/. Sau đó, sử dụng Filelớp, đặt setExecutablecờ truecho tệp và chạy nó bởi lớp Process hoặc gói bên thứ ba như Root Tools .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.