- .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文件的学习笔记
最新推荐文章于 2024-01-16 18:07:45 发布