2012-04-12 5 views
9

Tôi muốn chạy hello world được viết trên C++ và được biên dịch với Android toolchain 9, nhưng tôi gặp vấn đề: theo mặc định, tôi không có quyền khởi chạy và tôi không thể thay đổi quyền sử dụng chmod`.Cách chạy ứng dụng C++ trong Android SHELL

tôi đã sử dụng Android 2.3.3 - Api Level 10

ứng dụng đã được biên soạn bởi trình biên dịch chéo cho API level 9

Thủ tục:

Compile ứng dụng:

~/toolchain_andr9/bin/cánh tay-linux-androideabi- g ++ helloworld.cpp

Sau đó gửi đơn đến sdcard trên giả lập:

>adb push a.out /mnt/sdcard 

sau đó đi đến SHELL và cố gắng chạy a.out:

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

Và kết quả là:

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

lệnh ls -l show quyền cho a.out:

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

Tôi cố gắng để thay đổi điều khoản:

>chmod 777 /mnt/sdcard/a.out 

Nhưng quyền không thay đổi:

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

Tôi nghĩ rằng tôi đã để lại một số điều quan trọng sử dụng Android.

Ai đó có thể giúp tôi và cung cấp cho tôi cách chạy ứng dụng trong `Android SHELL?

Cảm ơn rất nhiều.

P.S. Xin lỗi cho tiếng Anh của tôi =)

+0

Bạn có gốc không? Bạn có thể sử dụng: http://gimite.net/en/index.php?Run%20native%20executable%20in%20Android%20App –

+1

thử đặt tệp của bạn trong/data/local ở đó bạn sẽ có thể chmod của bạn file – mgiza

Trả lời

13

Theo mặc định, thẻ SD được gắn với tùy chọn noexec, không cho phép thực hiện bất kỳ tệp nào trên thẻ, cho dù đó là quyền (thậm chí -rwxrwxrwx), vì vậy bạn cần di chuyển tệp đến một vị trí khác và sau đó thực hiện nó.

Cách dễ nhất là di chuyển tệp sang /data/local/tmp/ và thực thi nó bằng đường dẫn đầy đủ (ngữ nghĩa POSIX PATH thông thường).

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

này không đòi hỏitruy cập rootsống sótreboot.

4

Nếu bạn đã root điện thoại của mình, bạn có thể thực hiện mount -o remount,rw /mnt/sdcard và nó sẽ chạy.

Tôi đã thử trên Android của mình.

+0

Tính năng này có hoạt động không? Đã có ai thử chưa? Doesbit loại bỏ cờ noexec? Liệu các sdcard remount khi khởi động lại? Tôi đã sai lầm với các định dạng (vfat> ext2) và nó làm cho android rất điên. Đã phải sử dụng 'newfs_msdos' để sửa chữa nó, vì vậy tôi do dự để gây rối với sdcard. –

+0

@MarkMikofski Điều này không thể khởi động lại, và 'sdcard' gắn kết bình thường khi khởi động lại. –

+0

tuyệt vời, hoàn toàn hoạt động, nó chỉ xóa các cờ 'nosuid, nodev, noexec'! –