tôi đã chuẩn bị một mẫu mã C dưới đây để làm cho nó chạy trên hệ điều hành Android bằng cách làm theo các thủ tục này,Làm cách nào để bạn biên dịch các tệp thi hành ELF cho Android?
/*test.c file*/
#include <stdio.h>
int
main(int argc, char **argv)
{
printf("Android Test Application.\n");
return 0;
}
$ cánh tay-none-linux-gnueabi-gcc -o test test.c Wall
Tôi đã sao chép tệp nhị phân --test-- vào thư mục "/ system/bin" của thiết bị đích.
Khi tôi cố gắng để làm cho chạy nhị phân cross-biên soạn trên hệ thống đích, tôi nhận được lỗi này
$ pwd
/system/bin
$ ./test
bash: ./test: Không có tệp hoặc thư mục nào như vậy
$ ls -al | kiểm tra grep
-rwxr-xr-x 1 0 0 8384 2011-12-22 15:26 kiểm tra
mặc dù các tập tin nhị phân --test-- đã là trong "/ system/bin" thư mục .
cross-trình biên dịch của tôi là
$ cánh tay-none-linux-gnueabi-gcc --version
cánh tay-none-linux-gnueabi-gcc (Sourcery G ++ Lite 2009q1-203) 4.3 .3 Bản quyền (C) 2008 Free Software Foundation, Inc. Đây là phần mềm miễn phí ; xem nguồn để sao chép các điều kiện. Có NO bảo hành; thậm chí không cho SỞ HỮU HOẶC PHÙ HỢP CHO MỘT MỤC ĐÍCH THỤ ĐỘNG MỤC ĐÍCH.
Tại sao tôi gặp phải lỗi này?
bash: ./test: Không có tập tin hoặc thư mục
_could_ là một thiếu/trình tải động được liên kết bị lỗi hoặc một cái gì đó tương tự. Tìm hiểu trình tải là gì với 'readelf'. Hãy thử 'ldd./Test' trên thiết bị. Ngoài ra hãy thử liên kết tĩnh exe để xem nếu ít nhất là hoạt động. – Mat
Đang chạy 'ls -al | grep date' trên điện thoại của tôi mang lại 'lrwxrwxrwx' làm quyền. Có lẽ đó là một vấn đề quyền? –
Tôi làm cách nào để phát hiện trình tải động hiện tại của mình? Tôi có thể sử dụng tiện ích readelf để tìm hiểu điều này không? – albin