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

來源:互聯網
上載者:User

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

android系統底層使用了linux的核心,但在檔案系統上與linux有所差異。我們可以通過Google提供的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目錄下即可,是不是很方便呢?

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.