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