標籤:.so檔案 ndk call 引入 efi flags red 拼接 filename
JNI代碼都寫好了,在編譯之前我們有非常重要的一部,就是寫mk檔案,mk檔案就相當於gcc編譯時間的Makefile檔案,它是用來告訴編譯器如何去編譯的。
這裡只對自己理解和常用的知識點做記錄,想要看關於android.mk的全部解釋請移步android.mk。
- 對執行順序的猜想,mk檔案的執行順序是從上往下順序執行的
- 基本文法。
$() 引用方法或變數
:= 賦值符號
+= 拼接賦值
include 引入(調用)某個程式碼片段,例如include $(BUILD_XXXXX)就相當於把BUILD_XXXXX這個方法的實現拿過來,編譯器讀到這一行時即執行該方法
- mk檔案基本都是以LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)開頭,以include $(BUILD_XXXXX)結尾
- 常用預留變數解析(基本都以LOCAL_開頭)
LOCAL_PATH:指定當前檔案的位置,基本都是賦值為$(call my-dir)
LOCAL_SRC_FILES:指定需編譯的源檔案,多檔案以空格分隔或使用+=拼接賦值
LOCAL_MODULE:指定module名,要求必須唯一且不能帶空格
LOCAL_MODULE_FILENAME:指定產生的module的檔案名稱,預設則按照lib<LOCAL_MODULE>產生.a或.so檔案
LOCAL_STATIC_LIBRARIES:引用的靜態庫(.a)
LOCAL_SHARED_LIBRARIES:引用的動態庫(.so)
LOCAL_LDFLAGS:指定連結標誌
- 常用系統方法
CLEAR_VARS:清除所有預設的值
BUILD_SHARED_LIBRARY:編譯出動態庫(.so)
BUILD_STATIC_LIBRARY:編譯出靜態庫(.a)
- 編譯
cd到.mk檔案所在目錄,執行ndk包中的ndk-build命令
Android JNI之編譯