怎樣用 C/C++ 開發一個原生程式運行在 Android 下而不用 ADK、NDK

來源:互聯網
上載者:User

熟悉 Android 與 Linux
的開發人員看到這篇弱弱的文章該會嘲笑了,不過這篇文章是寫給那些還不知道的開發人員的。當然如果你對此比較熟悉,又打算看下去,我會感到很高興的。:)

眾所周知,Android 是基於 Linux 的,因此大家都可以想到,Android 應該可以運行 Linux 下的程式,但是該平台是採用的 ARM
的處理器,因此哪裡去找一款 ARM Linux 的編譯器呢?這裡我向大家推薦 Sourcery G++ 這款編譯器,是:

http://www.codesourcery.com/sgpp/lite/arm/portal/release1803

因為我的系統是 Windows,因此我下載了 IA32 Windows Installer ,按照安裝提示一步步安裝完畢後,我們就可以用 C/C++
來寫程式,用它編譯後放在 AVD 或你的實機上運行了。 

下面是我用 C 寫的一個 Hello World 程式。

#include <stdio.h>int main(void){char s[20];scanf("%s",s);printf("Hello world, from %s.\n",s);return 0;}

儲存為 hello.c,因為
Android 的 Linux 核心沒有標準IO庫函數,因此我們採用靜態編譯的方式進行編譯。

arm-none-linux-gnueabi-gcc -static
-o hello hello.c

然後我們使用 adb 將 hello 程式上傳在 AVD 或你的實機的 /data
目錄下。你可能會有疑問,為什麼要上傳到這個目錄呢?呵呵,其實是因為 Android 的 /system/bin 與 /sbin 目錄是 Read Only
System,而 /mnt/sdcard 下面所有的檔案所有者使用者是 system,許可權組是 sdcard_r,就算是 root
賬戶也無法增加檔案的可執行許可權。當然你也有可能找到其他可上傳又可改檔案許可權的目錄。

adb push hello /data

然後我們用 adb
shell 命令進入你的 Android 裝置的 shell 裡,更改它的許可權。


adb shell


cd /data


chmod 777 hello 

下面是執行的結果:


./hello


newcj


Hello world, from newcj.


怎麼樣,有意思吧,趕快去試試吧,我相信你也會感到有趣的!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.