Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android系統如何運行動態編譯的程序

Android系統如何運行動態編譯的程序

編輯:關於Android編程

android系統底層使用了linux的內核,但在文件系統上與linux有所差異。我們可以通過谷歌提供的ADB工具進入android系統的linux命令終端。但是不能執行我們在PC上通過arm-linux-gcc等交叉編譯器動態編譯出來的應用程序,比如如下指令:

arm-linux-gcc mc.c -o mc

然後用adb push將可執行程序復制到android系統/data/local中,接著改變權限:

adb shell chmod 777 /data/local/mc

最後進入/data/local目錄執行應用程序:

./mc

會提示如下:

1|root@android:/data/local # ./mc
/system/bin/sh: ./mc: No such file or directory

這就說明系統中找不到所需要的鏈接庫,而如果是在arm-linux系統下,可以順利執行。這就說明android系統中缺少linux系統中的這些依賴庫。當然如果加上-static選項靜態編譯可以解決問題,不過靜態編譯出來的文件往往比動態編譯出來的文件大幾十倍,一個簡單的makefile可能會到五百多KB。對於長久來看這是很不劃算的。我們可以從linux的文件系統中找到這些庫。方法如下:
首先在linux源碼中找到文件系統壓縮包:file_system.tar.gz。
解壓

tar xzvf file_system.tar.gz

然後復制lib裡面的所有內容到android的/lib目錄下:

adb push lib /lib

這時候,linux裡的庫文件就可以在android中找到了。這時候回到android系統的/data/local目錄,再次執行即可執行靜態編譯的文件了。

另外,如果在linux系統下,我們可以通過配置環境變量或者將mc可執行文件放到/bin目錄下,這樣可以在任何路徑下執行這個命令。那麼在android系統中有沒有類似操作呢?當然是可以的,我們將可執行文件mc放在/system/bin目錄下即可,是不是很方便呢?

大家如果還有什麼疑問可以在下面留言,大家共同探討~~

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved