您的位置:首页 > 运维架构 > Linux

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

2016-09-11 11:22 609 查看
.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)
host Prebuilt: tzdata-host (out/host/linux-x86/obj/ETC/tzdata-host_intermediates/tzdata)
Install: out/host/linux-x86/usr/share/zoneinfo/tzdata
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: