android通過C代碼實現動態和靜態連結

來源:互聯網
上載者:User

ANDROID中靜態連結C檔案:

0,首先安裝gcc相關的編譯器,具體不詳述,筆者用的是mingw,也可以用其他的編譯器,網路上很多安裝詳解,本文不做敘述。

1,建立C代碼,命名為hello,編寫內容:
#include<stdio.h>
int main(){
printf("hello c!!!");
return 0;
}

2,進入c檔案指定的目錄中比如:d:\test中,通過gcc hello.c 或者gcc hello.c -static -o hellostatic命令產生可執行檔exe檔案。

注意:如果有no new line end the file的警告,在你編程的末尾敲一個斷行符號就可以

3,啟動模擬器,通過adb命令(首先adb命令必須配置好,否則會有不支援命令錯誤),adb shell -->> cd data -->> mkdir c建立c檔案夾

4,進入c檔案指定的目錄中比如:d:\test中,執行D:\test>adb push hellostatic.exe /data/c,將檔案載入到c檔案中,

5,通過adb shell 命令,進入到c檔案中,如:adb shell-->>cd data-->> cd c -->ls 執行chmod 777 hellostatic.exe 如# chmod 777 hellostatic.exe (設定許可權)

6,繼續通過 ./hellostatic.exe命令執行程式,將會出現;'hello c!!!‘

總結:對於靜態連結產生的可執行檔比較大,不需要依賴任何系統庫,一切都是自包含的。

動態連結:
1,同上執行命令:D:\test>gcc -c Hello.c -o hello.o
因為使用的是動態連結,所以連結時候必須用到ANDROID下Linux的libraries。此類庫位於/system/lib 目錄下,

2, 進入system檔案夾下,執行ls列出檔案,其中有個是lib的目錄,進入並將其內容列出。各種so檔案,同樣也有hw等檔案夾,為了能正確的連結程式,我們將此目錄(system/lib)中的所有庫檔案複製到本地檔案夾中,通過adb pull命令,如C:\Users\Administrator>adb pull /system/lib d:\LIB\android_lib

3

4,通過上面的圖片執行後,接下來的步驟如靜態連結相似,執行命令(安裝)adb push->(控制許可權)adb shell chmod 777->(運行)adb shell /data/c/hello.exe

相關文章

聯繫我們

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