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

分享

Android.mk的用法和基礎(chǔ)

 秋秋魯 2011-01-07

     一個(gè)Android.mk file用來(lái)向編譯系統(tǒng)描述你的源代碼。具體來(lái)說(shuō):該文件是GNU Makefile的一小部分,,會(huì)被編譯系統(tǒng)解析一次或多次。你可以在每一個(gè)Android.mk file中定義一個(gè)或多個(gè)模塊,你也可以在幾個(gè)模塊中使用同一個(gè)源代碼文件,。編譯系統(tǒng)為你處理許多細(xì)節(jié)問(wèn)題。例如,,你不需要在你的Android.mk中 列出頭文件和依賴(lài)文件,。NDK編譯系統(tǒng)將會(huì)為你自動(dòng)處理這些問(wèn)題,。這也意味著,在升級(jí)NDK后,,你應(yīng)該得到新的toolchain/platform支 持,,而且不需要改變你的Android.mk文件。
      先看一個(gè)簡(jiǎn)單的例子:一個(gè)簡(jiǎn)單的"hello world",,比如下面的文件:
sources/helloworld/helloworld.c
sources/helloworld/Android.mk
相應(yīng)的Android.mk文件會(huì)象下面這樣:
---------- cut here ------------------
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE
:= helloworld
LOCAL_SRC_FILES := helloworld.c
include $(BUILD_SHARED_LIBRARY)
---------- cut here ------------------
      我們來(lái)解釋一下這幾行代碼:
LOCAL_PATH := $(call my-dir)
一個(gè)Android.mk file首先必須定義好LOCAL_PATH變量,。它用于在開(kāi)發(fā)樹(shù)中查找源文件。在這個(gè)例子中,,宏函數(shù)’my-dir’, 由編譯系統(tǒng)提供,,用于返回當(dāng)前路徑(即包含Android.mk file文件的目錄)。
include $( CLEAR_VARS)
CLEAR_VARS 由編譯系統(tǒng)提供,,指定讓GNU MAKEFILE為你清除許多LOCAL_XXX變量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),除LOCAL_PATH ,。這是必要的,因?yàn)樗械木幾g控制文件都在同一個(gè)GNU MAKE執(zhí)行環(huán)境中,,所有的變量都是全局的,。
LOCAL_MODULE := helloworld
LOCAL_MODULE變量必須定義,以標(biāo)識(shí)你在Android.mk文件中描述的每個(gè)模塊,。名稱(chēng)必須是唯一的,,而且不包含任何空格。注意編譯系統(tǒng)會(huì)自動(dòng)產(chǎn)生合適的前綴和后綴,,換句話說(shuō),,一個(gè)被命名為'foo'的共享庫(kù)模塊,將會(huì)生成'libfoo.so'文件,。
LOCAL_SRC_FILES := helloworld.c
LOCAL_SRC_FILES變量必須包含將要編譯打包進(jìn)模塊中的C或C++源代碼文件,。注意,你不用在這里列出頭文件和包含文件,,因?yàn)榫幾g系統(tǒng)將會(huì)自動(dòng)為你找出依賴(lài)型的文件,;僅僅列出直接傳遞給編譯器的源代碼文件就好。

      在Android中增加本地程序或者庫(kù),,這些程序和庫(kù)與其所載路徑?jīng)]有任何關(guān)系,,只和它們的Android.mk文件有關(guān)系。Android.mk和普通的Makefile有所不同,,它具有統(tǒng)一的寫(xiě)法,,主要包含一些系統(tǒng)公共的宏。
     在一個(gè)Android.mk中可以生成多個(gè)可執(zhí)行程序,、動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù),。
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)
(菜 鳥(niǎo)級(jí)別解釋?zhuān)?=是賦值的意思,,$是引用某變量的值)LOCAL_SRC_FILES中加入源文件路徑,,LOCAL_C_INCLUDES 中加入所需要包含的頭文件路徑,,LOCAL_STATIC_LIBRARIES加入所需要鏈接的靜態(tài)庫(kù)(*.a)的名 稱(chēng),LOCAL_SHARED_LIBRARIES中加入所需要鏈接的動(dòng)態(tài)庫(kù)(*.so)的名稱(chēng),,LOCAL_MODULE表示模塊最終的名 稱(chēng),,BUILD_EXECUTABLE表示以一個(gè)可執(zhí)行程序的方式進(jìn)行編譯。
2,,編譯靜態(tài)庫(kù)的模板:
     #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)庫(kù)。
3,,編譯動(dòng)態(tài)庫(kù)的模板:
     #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è)靜態(tài)庫(kù)。
      以上三者的生成結(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)庫(kù):      XXX_static_intermediates
動(dòng)態(tài)庫(kù):      XXX_shared_intermediates
      另外,,在Android.mk文件中,還可以指定最后的目標(biāo)安裝路徑,,用LOCAL_MODULE_PATH和LOCAL_UNSTRIPPED_PATH來(lái)指定,。不同的文件系統(tǒng)路徑用以下的宏進(jìn)行選擇:
TARGET_ROOT_OUT:表示根文件系統(tǒng)。
TARGET_OUT:表示system文件系統(tǒng),。
TARGET_OUT_DATA:表示data文件系統(tǒng),。
用法如:
 CAL_MODULE_PATH:=$(TARGET_ROOT_OUT)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(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)論公約

    類(lèi)似文章 更多