Linux下 .o .a .so .mk 文件说明

 .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 
#include
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)
host Prebuilt: tzdata-host (out/host/linux-x86/obj/ETC/tzdata-host_intermediates/tzdata)
Install: out/host/linux-x86/usr/share/zoneinfo/tzdata

你可能感兴趣的:(C码,Linux)