NDK

http://blog.csdn.net/shulianghan/article/details/18964835

  1. 交叉編譯庫文件

C代碼執(zhí)行 : C代碼被編譯成庫文件之后, 才能執(zhí)行, 庫文件分為動(dòng)態(tài)庫靜態(tài)庫 兩種;
-- 動(dòng)態(tài)庫 : unix環(huán)境下.so 后綴的是動(dòng)態(tài)庫, windows環(huán)境下.dll 后綴的是動(dòng)態(tài)庫; 動(dòng)態(tài)庫可以依賴靜態(tài)庫加載一些可執(zhí)行的C代碼;
-- 靜態(tài)庫 :.a 后綴是靜態(tài)庫的擴(kuò)展名;

庫文件來源 : C代碼 進(jìn)行 編譯 鏈接操作之后, 才會(huì)生成庫文件, 不同類型的CPU 操作系統(tǒng) 生成的庫文件是不一樣;
-- CPU分類 : arm結(jié)構(gòu), 嵌入式設(shè)備處理器; x86結(jié)構(gòu), pc 服務(wù)器處理器; 不同的CPU指令集不同;
-- 交叉編譯 :windows x86編譯出來的庫文件可以在arm平臺(tái)運(yùn)行的代碼;
-- 交叉編譯工具鏈 : Google提供的 NDK 就是交叉編譯工具鏈, 可以在linux環(huán)境下編譯出在arn平臺(tái)下執(zhí)行的二進(jìn)制庫文件;

NDK作用 : 是Google提供了交叉編譯工具鏈, 能夠在linux平臺(tái)編譯出在arm平臺(tái)下執(zhí)行的二進(jìn)制庫文件;

NDK版本介紹 : android-ndk-windows 是在windows系統(tǒng)中的cygwin使用的, android-ndk-linux 是在linux下使用的;

(1) Android.mk文件講解

Android.mk文件內(nèi)容 :

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.c

include $(BUILD_SHARED_LIBRARY)

獲取當(dāng)前文件內(nèi)容 : $(call my-dir) 是編譯器中的宏方法, 調(diào)用該宏方法, 就會(huì)返回前的目錄路徑;
賦值符號(hào) : " := " 是賦值符號(hào), 第一句話 是 返回當(dāng)前文件所在的當(dāng)前目錄, 并將這個(gè)目錄路徑賦值給 LOCAL_PATH;
初始化編譯模塊參數(shù) : $(CLEAR_VARS) 作用是將編譯模塊的參數(shù)初始化, LOCAL_MODULE LOCAL_SRC_FILES 也是這樣的參數(shù);
指定編譯模塊 : LOCAL_MODULE := hello , 指定編譯后的 so 文件名稱, 編譯好之后系統(tǒng)會(huì)在該名稱前面加上 "lib", 后綴加上 ".so";
指定編譯源文件 : LOCAL_SRC_FILES := hello.c 告訴編譯系統(tǒng)源文件, 如果有多個(gè)文件那么就依次寫在后面即可;
編譯成靜態(tài)庫 : include $(BUILD_SHARED_LIBRARY), 作用是高速系統(tǒng), 編譯的結(jié)果編譯成 .so 后綴的靜態(tài)庫;

靜態(tài)庫引入 : NDK的platform中有很多 ".a" 結(jié)尾的動(dòng)態(tài)庫, 我們編譯動(dòng)態(tài)庫的時(shí)候, 可以將一些靜態(tài)庫引入進(jìn)來;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容