免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Android.mk文件和Application.mk文件詳解

相同點:都是輕量級 Makefile(Makefile文件定義一些列指令,指定文件編譯順序,類似shell腳本)

Application:

位置:通常在 $PROJECT/jni目錄下

作用:配置所有modules的編譯變量在 APP_ABI := xxx xxx xxx   設(shè)置中間有空格

           可以設(shè)置一個或多個ABI對應(yīng)的指令集

指令集合(armeabi,armeabi-v7a,arm64-v8a,x86,x86_64,mips,mips64,all) all全部對應(yīng)

關(guān)于指令集的選擇:

         armeabi-v7a兼容armeabi

x86手機(jī)因兼容性基本都使用libhoudini模塊,兼容arm指令集

64位默認(rèn)兼容32位abi的so

所以:對大小嚴(yán)格要求選擇 armeabi,對性能也有要求添加 x86

APP_OPTM(編譯模式)

         默認(rèn)release  可修改為debug

Android.mk文件

包含:

1.  宏:my-dir,all-subdir-makefiles等   在$(call <function>)調(diào)用,返回文本信息

2.  變量:CLEAR_VARS,BUILD_SHARED_LIBRARY,TARGET_ARCH等,NDK提供,在Android.mk被解析前存在

3.  模塊描述變量:LOCAL_PATH,LOCAL_MODULE,LOCAL_SRC_FILES等(LOCAL_前綴),除LOCAL_PATH外其余都在include $(CLEAR_VARS)和include $(BUILD_XXX)之間。

LOCAL_PATH(當(dāng)前目錄):

         my-dir:通常最后一次包含Makefile文件路徑,通常是Android.mk所在路徑

CLEAR_VARS(變量清除):

         除LOCAL_PATH外的其余在include $(CLEAR_VARS)和include $(BUILD_XXX)之間的變量

BUILD_EXECUTABLE

LOCAL_MODULE(module名稱)

LOCAL_SRC_FILE(源碼文件)

BUILD_SHARED_LIBRARY(動態(tài)編譯)                    BUILD_STATIC_LIBRARY(靜態(tài)編譯)

PREBUILD_SHARED_LIBRARY(動態(tài)預(yù)編譯)    PREBUILD_STATIC_LIBRARY(靜態(tài)預(yù)編譯)

BUILD_EXECUTABLE(生成可執(zhí)行的文件)

TARGET_ARCH_ABI(目標(biāo)ABI名稱)

LOCAL_LDLIBS(鏈接庫)

         用額外鏈接選項,所有庫都有“-l”前綴,可同時列出空格隔開

LOCAL_CFLAGS,LOCA_CPPFLAGS和LOACL_LDFLAGES(編譯,鏈接標(biāo)志)

LOCAL_CFLAGS: 編譯C/C 傳遞給編譯器的標(biāo)志集合

LCOAL_CPPFLAGS: 只支持C 傳遞給編譯器的標(biāo)志集合

LOCAL_LDFLAGES: 傳遞給連接器的額外參數(shù)

編譯選項格式(LOCAL_CPPFLAGES = XXX)

         1.-fexception:NDK異常處理默認(rèn)禁止,可以編譯帶異常處理的C 代碼

         2.-ftti:NDK默認(rèn)不支持C RTTI,可以編譯帶RTTI的C 代碼

         3.-fvisibility=hidden:隱藏不需要導(dǎo)出的函數(shù),若某個函數(shù)需要導(dǎo)出添加JNIEXPROT或者_(dá)_attribute__((visibility(“default”)))即可

         4.-lfunction-section:默認(rèn)編譯文件.o中代碼部分只有.text段,會使每個函數(shù)都單獨

有一個段。對鏈接后代碼大小并沒有影響

         5.-fdata-section:同上每個data都有一個單獨的段

         6.-Wl—gc-sections:使用連接器ld鏈接時刪除不用的段

-Wl,<option>告訴編譯器,后邊選項<option>傳遞給連接器

         7.-fPIC:PIC(position independent code)用于編譯位置無關(guān)代碼,生成可用于共享庫的位置獨立代碼。若不添加-fPIC,加載so文件的代碼段時,代碼段引用的數(shù)據(jù)對象需要重

定位,重定位會修改代碼段內(nèi)容,造成,沒有調(diào)用這個so,代碼段的進(jìn)程在內(nèi)核中會產(chǎn)生著個文件拷貝。

         8.-Wall:(wring all)編譯和鏈接中顯示所有警告信息

Android.mk通用格式:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_ARM_MODE := arm

LOCAL_MODULE    := helloworld

LOCAL_SRC_FILES := helloworld.c

include $(BUILD_EXECUTABLE)

Application.mk通用格式

APP_ABI := x86 armeabi-v7a

來源:http://www.icode9.com/content-4-222451.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
NDK提供的共享庫(Prebuilt)
Android NDK編譯選項設(shè)置
Android開發(fā)實踐:在任意目錄執(zhí)行NDK編譯
關(guān)于Android的.so文件你所需要知道的
Android中集成第三方軟件包(.jar, .so)
Android Studio下jni應(yīng)用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服