2012-01-02 66 views
24

Q1) Tôi muốn chạy một chương trình c đơn giản trên trình giả lập Android. Tôi đang sử dụng hệ điều hành windows xp trên máy của mình. Tôi đã cài đặt sdk, jdk, eclipse để phát triển Android và đã chạy ứng dụng Android thành công trên AVD.Cách biên dịch và chạy chương trình C/C++ trên hệ thống Android

Q2) Tôi chỉ cần biết là có cách nào để chạy chương trình C (không có bất kỳ java nào) trên AVD. Trên máy tính của tôi, tôi đã cài đặt cánh tay và sử dụng mà tôi đã biên soạn một chương trình C.

Q3) Tôi cũng muốn biết là có thể đẩy nhị phân đã biên dịch vào thiết bị Android hoặc AVD và chạy bằng thiết bị đầu cuối của thiết bị Android hoặc AVD?

Trả lời

4

Bạn cần tải xuống Native Development Kit.

+0

Tôi đã làm điều đó rồi..nhưng tôi không tìm thấy gì hữu ích để làm gì tiếp theo? – user1125898

+0

@ user1125898 - Ý bạn là bạn không tìm thấy gì hữu ích? NDK chính xác với mục đích viết mã gốc trong C/C++. Cuộn xuống cuối liên kết mà tôi đã cung cấp và bạn sẽ thấy phần bắt đầu, cũng như liên kết tới nhóm thảo luận NDK. –

8

nếu bạn đã cài đặt NDK thành công sau đó bắt đầu với nó ứng dụng mẫu

http://developer.android.com/sdk/ndk/overview.html#samples

nếu bạn quan tâm khác cách này sau đó có thể điều này sẽ giúp

http://shareprogrammingtips.com/c-language-programming-tips/how-can-i-write-applications-in-c-or-c-for-android/

Tôi cũng muốn biết là có thể đẩy nhị phân đã biên dịch thành thiết bị Android hoặc AVD và chạy bằng thiết bị đầu cuối của thiết bị Android hoặc AVD?

đây bạn có thể nhìn thấy NestedVM

NestedVM cung cấp dịch nhị phân cho Java bytecode. Điều này được thực hiện bằng cách biên dịch GCC thành một nhị phân MIPS, sau đó được dịch sang một tệp lớp Java. Do đó, bất kỳ ứng dụng nào được viết bằng C, C++, Fortran hoặc bất kỳ ngôn ngữ nào khác được GCC hỗ trợ có thể chạy trong Java thuần túy 100% mà không có thay đổi nguồn.


Ví dụ: Cross compile Hello world C program and run it on android

12

Bạn có thể biên dịch chương trình C của bạn với một ARM cross-trình biên dịch:

arm-linux-gnueabi-gcc -static -march=armv7-a test.c -o test 

Sau đó, bạn có thể đẩy tập tin nhị phân được biên soạn vào nơi nào (không đẩy nó vào thẻ SD):

adb push test /data/local/tmp/test 
+1

Tôi đã nhận 'Fatal: Kernel quá cũ.Lỗi phân đoạn'. My ubuntu có hạt nhân 3.2.0-38 trong khi Android thường chạy trên 2.6.xx Bạn có biết cách buộc trình biên dịch liên kết tĩnh nhị phân với glibc cũ hơn không? –

+0

@TranSonHai: bạn nên sử dụng NDK của Android và thư viện thời gian chạy 'bionic' thay vì ubuntu tooolchain. –

+1

'-march = armv7' phải được đổi thành' -march = armv7-a'. – Javad

0

Nếu bạn wan để biên dịch và chạy các ứng dụng Java/C/C++ trực tiếp trên thiết bị Android của bạn, tôi khuyên bạn nên sử dụng môi trường Terminal IDE từ Google Play. Đó là một gói rất mượt mà để phát triển và biên dịch APK Android, Java, C và C++ trực tiếp trên thiết bị của bạn. Giao diện là tất cả các dòng lệnh và "vi" dựa, vì vậy nó có cảm giác Linux thực sự. Nó đi kèm với việc triển khai C/C++ gnu.

Ngoài ra, có một ứng dụng máy chủ telnet và telnet được tích hợp sẵn, vì vậy bạn có thể thực hiện tất cả các chương trình với PC và bàn phím lớn nhưng hoạt động trên thiết bị. Không cần quyền root.

Các vấn đề liên quan