- .o、.a、.so文件都是Linux下的程序函數庫,【即編譯好的可以供其他程序使用的代碼和數據】。
- 優點:程序模塊化,容易重新編譯,方便升級。
- 分類:
- .o文件
- 動態加載函數庫(對應.o文件,一個.c或.cpp文件對應一個.o文件 相當於Windows裏的.obj文件)
- .a文件靜態函數庫(對應.a文件 好多個.o合在一起,用於靜態連接 多個.a可以鏈接生成一個out可執行文件 對應windows的exe可執行文件)
- .so共享函數庫(對應.so文件,類似於Windows的dll文件)
- ---------------------------1.c↓------------------------------
- #include <stdio.h>
- #include<limits.h>
- void main(){
- printf("\n%d", sizeof(int));
- printf("\n%d", sizeof(short));
- printf("\n%d", sizeof(double));
- signed short num = SHRT_MAX;
- unsigned short numm = USHRT_MAX;
- printf("%d,%d", sizeof(signed short), sizeof(unsigned short));
- printf("\n%d,%d", num, numm);
- unsigned short x = 65535 + 1 + 1;
- printf("%d", x);
- printf("\n..............", x);
- }
- -----------------------------1.c↑-------------------------
- ---------------------------Android.mk↓---------------------------
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_SRC_FILES += 1.c
- LOCAL_MODULE := zzjtestA
- include $(BUILD_HOST_STATIC_LIBRARY)
- -----------------------------Android.mk↑---------------------------
- BUILD_HOST_STATIC_LIBRARY
- BUILD_HOST_SHARED_LIBRARY
- BUILD_STATIC_LIBRARY
- BUILD_SHARED_LIBRARY
- BUILD_EXECUTABLE
- BUILD_HOST_EXECUTABLE
- BUILD_PACKAGE
- BUILD_PREBUILT
- BUILD_MULTI_PREBUILT
- BUILD_HOST_PREBUILT
- BUILD_JAVA_LIBRARY
- BUILD_STATIC_JAVA_LIBRARY
- BUILD_HOST_JAVA_LIBRARY
- 通過把 include $(XXXX) 改爲不同選項
- // 編譯Linux平臺的靜態庫 因爲是在PC上編譯安卓系統通過交叉編譯 所以能生成Linux電腦可運行的動態靜態庫(不能在手機端運行)
- 1.include $(BUILD_HOST_STATIC_LIBRARY)
- host StaticLib: zzjtestA_32 (out/host/linux-x86/obj32/STATIC_LIBRARIES/zzjtestA_intermediates/zzjtestA.a)
- 2.include $(BUILD_HOST_SHARED_LIBRARY)
- host SharedLib: zzjtestA_32 (out/host/linux-x86/obj32/lib/zzjtestA.so)
- 3.include $(BUILD_STATIC_LIBRARY)
- target StaticLib: zzjtestA_32 (out/target/product/hq6737t_66_1ha_m0/obj_arm/STATIC_LIBRARIES/zzjtestA_intermediates/zzjtestA.a)
- 4.include $(BUILD_SHARED_LIBRARY)
- target Symbolic: zzjtestA_32 (out/target/product/hq6737t_66_1ha_m0/symbols/system/lib/zzjtestA.so)
- 5.include $(BUILD_EXECUTABLE) //手機可執行文件
- target Symbolic: zzjtestA (out/target/product/hq6737t_66_1ha_m0/symbols/system/bin/zzjtestA)
- 6.include $(BUILD_HOST_EXECUTABLE) //PC Linux可執行文件
- host Executable: zzjtestA (out/host/linux-x86/obj/EXECUTABLES/zzjtestA_intermediates/zzjtestA)
- Install: out/host/linux-x86/bin/zzjtestA
- BUILD_PACKAGE
- BUILD_PREBUILT
- BUILD_MULTI_PREBUILT
- BUILD_HOST_PREBUILT
- BUILD_JAVA_LIBRARY
- BUILD_STATIC_JAVA_LIBRARY
- BUILD_HOST_JAVA_LIBRARY
- // 這七個選項 1.c 文件編譯報錯 需要其他 java文件或者 其他文件 待續........
- BUILD_PACKAGE 用於生成APK文件
- 在packages\apps中的所有APP 都是通過 include $(BUILD_PACKAGE) 生成 .apk 文件
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := optional
- LOCAL_SRC_FILES := $(call all-java-files-under, src)
- LOCAL_PACKAGE_NAME := Gallery
- include $(BUILD_PACKAGE)
- BUILD_PREBUILT 用於生成預編譯文件 配置文件 /system/etc下的 爲後續文件提供支持?
- LOCAL_MODULE := tzdata-host
- include $(BUILD_PREBUILT)
春山眉黛~第一次寫.mk文件的學習筆記
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.