久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Android .mk文件語法規(guī)范及使用模板

 開花結(jié)果 2011-02-28

模塊描述變量:

下面的變量用于向編譯系統(tǒng)描述你的模塊。你應(yīng)該定義在'include $(CLEAR_VARS)'和'include $(BUILD_XXXXX)'之間定義。正如前面描寫的那樣,,$(CLEAR_VARS是一個(gè)腳本,,清除所有這些變量,除非在描述中顯式注明,。

 

LOCAL_PATH

  這個(gè)變量用于給出當(dāng)前文件的路徑,。你必須在Android.mk的開頭定義,可以這樣使用:

 

LOCAL_PATH := $(call my-dir)

這個(gè)變量不會(huì)被$(CLEAR_VARS)清除,,因此每個(gè)Android.mk只需要定義一次(即使你在一個(gè)文件中定義了幾個(gè)模塊的情況下),。

 

LOCAL_MODULE

這是你模塊的名字,它必須是唯一的,,而且不能包含空格,。你必須在包含任一的$(BUILD_XXXX)腳本之前定義它。模塊的名字決定了生成文件的 名字,,例如,,如果一個(gè)一個(gè)共享庫模塊的名字是<foo>,那么生成文件的名字就是lib<foo>.so,。但是,,在你的NDK生 成文件中(或者Android.mk或者Application.mk),你應(yīng)該只涉及(引用)有正常名字的其他模塊,。

 

LOCAL_SRC_FILES

這是要編譯的源代碼文件列表,。只要列出要傳遞給編譯器的文件,因?yàn)榫幾g系統(tǒng)自動(dòng)為你計(jì)算依賴,。

注意源代碼文件名稱都是相對(duì)于LOCAL_PATH的,,你可以使用路徑部分,例如:

LOCAL_SRC_FILES := foo.c \

toto/bar.c

注意:在生成文件中都要使用UNIX風(fēng)格的斜杠(/).windows風(fēng)格的反斜杠不會(huì)被正確的處理,。

 

LOCAL_CPP_EXTENSION

這是一個(gè)可選變量,,用來指定C++代碼文件的擴(kuò)展名,默認(rèn)是'.cpp',但是你可以改變它,,比如:

LOCAL_CPP_EXTENSION := .cxx

 

LOCAL_C_INCLUDES

       路徑的可選配置,,是從根目錄開始的,

    all sources (C, C++ and Assembly). For example:

        LOCAL_C_INCLUDES := sources/foo

    Or even:

        LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo

       需要在任何包含LOCAL_CFLAGS / LOCAL_CPPFLAGS標(biāo)志之前,。

 

LOCAL_CFLAGS

可選的編譯器選項(xiàng),,在編譯C代碼文件的時(shí)候使用。

這可能是有用的,,指定一個(gè)附加的包含路徑(相對(duì)于NDK的頂層目錄),,宏定義,,或者編譯選項(xiàng),。

 重要信息:不要在Android.mk中改變optimization/debugging級(jí)別,只要在Application.mk中指定合適的信息,就會(huì)自動(dòng)地為你處理這個(gè)問題,,在調(diào)試期間,,會(huì)讓NDK自動(dòng)生成有用的數(shù)據(jù)文件。

 

LOCAL_CXXFLAGS

Same as LOCAL_CFLAGS for C++ source files

 

LOCAL_CPPFLAGS

與LOCAL_CFLAGS相同,,但是對(duì)C 和 C++ source files都適用,。

 

LOCAL_STATIC_LIBRARIES

應(yīng)該鏈接到這個(gè)模塊的靜態(tài)庫列表(使用BUILD_STATIC_LIBRARY生成),這僅僅對(duì)共享庫模塊才有意義,。

 

LOCAL_SHARED_LIBRARIES

這個(gè)模塊在運(yùn)行時(shí)要依賴的共享庫模塊列表,,在鏈接時(shí)需要,在生成文件時(shí)嵌入的相應(yīng)的信息,。注意:這不會(huì)附加列出的模塊到編譯圖,,也就是,你仍然需要在Application.mk中把它們添加到程序要求的模塊中,。

 

LOCAL_LDLIBS

編譯你的模塊要使用的附加的鏈接器選項(xiàng),。這對(duì)于使用”-l”前綴傳遞指定庫的名字是有用的。例如,,下面將告訴鏈接器生成的模塊要在加載時(shí)刻鏈接到/system/lib/libz.so

LOCAL_LDLIBS := -lz

看docs/STABLE-APIS.TXT獲取你使用NDK發(fā)行版能鏈接到的開放的系統(tǒng)庫列表,。

 

LOCAL_ALLOW_UNDEFINED_SYMBOLS

  默認(rèn)情況下,在試圖編譯一個(gè)共享庫時(shí),,任何未定義的引用將導(dǎo)致一個(gè)“未定義的符號(hào)”錯(cuò)誤,。這對(duì)于在你的源代碼文件中捕捉錯(cuò)誤會(huì)有很大的幫助。

然而,,如果你因?yàn)槟承┰?,需要不啟?dòng)這項(xiàng)檢查,把這個(gè)變量設(shè)為‘true’,。注意相應(yīng)的共享庫可能在運(yùn)行時(shí)加載失敗,。(這個(gè)一般盡量不要去設(shè)為true)

 

LOCAL_ARM_MODE

       默認(rèn)情況下,arm目標(biāo)二進(jìn)制會(huì)以thumb的形式生成(16位),,你可以通過設(shè)置這個(gè)變量為arm如果你希望你的module是以32位指令的形式,。

    'arm' (32-bit instructions) mode. E.g.:

      LOCAL_ARM_MODE := arm

注意你同樣可以在編譯的時(shí)候告訴系統(tǒng)編譯特定的類型,比如

       LOCAL_SRC_FILES := foo.c bar.c.arm

這樣就告訴系統(tǒng)總是將bar.c以arm的模式編譯,,

 

 

Android.mk使用模板

在一個(gè)Android.mk中可以生成多個(gè)可執(zhí)行程序,、動(dòng)態(tài)庫和靜態(tài)庫。

1,,編譯應(yīng)用程序的模板:

     #Test Exe

     LOCAL_PATH := $(call my-dir)

     #include $(CLEAR_VARS)

     LOCAL_SRC_FILES:= main.c

     LOCAL_MODULE:= test_exe

     #LOCAL_C_INCLUDES :=

     #LOCAL_STATIC_LIBRARIES :=

     #LOCAL_SHARED_LIBRARIES :=

     include $(BUILD_EXECUTABLE)

(菜鳥級(jí)別解釋::=是賦值的意思,,$是引用某變量的值)LOCAL_SRC_FILES中加入源文件路徑,LOCAL_C_INCLUDES 中加入所需要包含的頭文件路徑,,LOCAL_STATIC_LIBRARIES加入所需要鏈接的靜態(tài)庫(*.a)的名 稱,,LOCAL_SHARED_LIBRARIES中加入所需要鏈接的動(dòng)態(tài)庫(*.so)的名稱,LOCAL_MODULE表示模塊最終的名 稱,BUILD_EXECUTABLE表示以一個(gè)可執(zhí)行程序的方式進(jìn)行編譯,。

2,,編譯靜態(tài)庫的模板:

     #Test Static Lib

     LOCAL_PATH := $(call my-dir)

     include $(CLEAR_VARS)

     LOCAL_SRC_FILES:= \

               helloworld.c

     LOCAL_MODULE:= libtest_static

     #LOCAL_C_INCLUDES :=

     #LOCAL_STATIC_LIBRARIES :=

     #LOCAL_SHARED_LIBRARIES :=

     include $(BUILD_STATIC_LIBRARY)

一般的和上面相似,BUILD_STATIC_LIBRARY表示編譯一個(gè)靜態(tài)庫,。

3,,編譯動(dòng)態(tài)庫的模板:

     #Test Shared Lib

     LOCAL_PATH := $(call my-dir)

     include $(CLEAR_VARS)

     LOCAL_SRC_FILES:= \

               helloworld.c

     LOCAL_MODULE:= libtest_shared

     TARGET_PRELINK_MODULES := false

     #LOCAL_C_INCLUDES :=

     #LOCAL_STATIC_LIBRARIES :=

     #LOCAL_SHARED_LIBRARIES :=

      include $(BUILD_SHARED_LIBRARY)

一般的和上面相似,BUILD_SHARED_LIBRARY表示編譯一個(gè)共享庫,。

 

以上三者的生成結(jié)果分別在如下,,generic依具體target會(huì)變:

out/target/product/generic/obj/EXECUTABLE

out/target/product/generic/obj/STATIC_LIBRARY

out/target/product/generic/obj/SHARED_LIBRARY

      每個(gè)模塊的目標(biāo)文件夾分別為:

可執(zhí)行程序:XXX_intermediates

靜態(tài)庫:      XXX_static_intermediates

動(dòng)態(tài)庫:      XXX_shared_intermediates

      另外,在Android.mk文件中,,還可以指定最后的目標(biāo)安裝路徑,,用LOCAL_MODULE_PATH和LOCAL_UNSTRIPPED_PATH來指定。不同的文件系統(tǒng)路徑用以下的宏進(jìn)行選擇:

TARGET_ROOT_OUT:表示根文件系統(tǒng),。

TARGET_OUT:表示system文件系統(tǒng),。

TARGET_OUT_DATA:表示data文件系統(tǒng)。

用法如:

LOCAL_MODULE_PATH:=$(TARGET_ROOT_OUT)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多