2014-01-30 98 views
0

我不知道這是否可能,但假設我想運行一個Hello World ANSI C程序,我該如何編譯,部署和運行它?它甚至有可能嗎?運行「Hello World!」 Android上的ANSI C程序?

下面是程序的示例代碼我心目中:

#include <stdio.h> 
int main(void) 
{ 
    FILE *f = fopen("/storage/sdcard0/download/hello_android.txt", "w"); 
    if (f) { 
     fprintf(f, "File created by an ANSI C program."); 
     fclose(f); 
    } 
    return 0; 
} 

正如你所看到的,它應該創建一個文件作爲「證據」,它已成功運行。

回答

1

1.編譯

你只需要知道你的硬件架構,找到正確的工具鏈和跨compil它與static選項。如果您不想使用static選項,則必須將您的二進制文件鏈接到bionic而不是libc。這意味着你必須從頭開始編譯android,它將編譯bionic。然後,您可以將您的C文件添加到「android environement」中,創建一個Android.mk文件並運行mm

2.部署

你必須使用adb你的二進制推送到您的手機。喜歡的東西:

adb push mybinary /data/ 

3.使用adb shell運行

啓動shell並簡單地運行:

$ /data/mybinary 

注:要執行步驟2和3手機必須是根深蒂固

+0

我想運行它在我自己的phon e(索尼Xperia S)。我認爲瞄準ARMv5或ARMv7將工作。至於步驟2和步驟3,我認爲adb可以與* Developer Options-> Enable USB debugging *一起使用,當手機通過USB電纜連接時,即使是沒有固定電話的手機也是如此。 – sashoalm

+0

@sashoalm使用無根電話可以運行'adb shell',但我懷疑'adb push' – jml

+0

這是充滿了錯誤。您**不需要從源代碼構建android以獲得可行的構建環境 - 儘管這不是ndk的目的,但它提供了一個。其次,你**不需要root來安裝和運行一個可執行文件 - 授予,可以存儲可執行文件的位置相對較少,但協作應用程序的專用目錄只有一個 - 應用程序需要授予公衆訪問權。 –