Android增加本地可执行程序或者库的Makefile模板参考

来源:互联网 发布:如何保存淘宝视频 编辑:程序博客网 时间:2024/06/10 13:39
Android中增加本地的程序或者库,这些程序和库与它们所在的路径没有关系,只和它们的Android.mk文件有关系。
Android.mk具有统一的写法,主要包含了一些系统公共的宏。
选项参考以下文件:
build/core/config.mk
默认的值在以下文件中定义:
build/core/base_rules.mk

在一个Android.mk中也可以生成多个可执行程序、动态库或者静态库,需要将源程序文件和它的Android.mk文件放在同一个文件夹下面,如下:

可执行程序的Android.mk:

# Test Exe
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
main.c
LOCAL_MODULE:= test_exe
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_EXECUTABLE)


静态库(归档文件)的Android.mk:

# Test Static lib
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
helloworld.c
LOCAL_MODULE:= libtest_static
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_STATIC_LIBRARY)


动态库(共享库)的Android.mk:

# Test shared lib
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
helloworld.c
LOCAL_MODULE:= libtest_shared
TARGET_PRELINK_MODULE := false
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_SHARED_LIBRARY)


编译通过后生成的目标文件夹分别位于以下的文件夹路径下:

可执行文件:out/target/product/generic/obj/EXECUTABLE
静态库:out/target/product/generic/obj/STATIC_LIBRARY
共享库:out/target/product/generic/obj/SHARED_LIBRARY


三种编译模板的区别如下所示:
目标的模板:可执行程序,动态库,静态库
include $(BUILD_EXECUTABLE)
include $(BUILD_SHARED_LIBRARY)
include $(BUILD_STATIC_LIBRARY)
如果编译主机的:可执行程序,动态库,静态库
include $(BUILD_HOST_EXECUTABLE)
include $(BUILD_HOST_SHARED_LIBRARY)
include $(BUILD_HOST_STATIC_LIBRARY)


安装路径的问题
LOCAL_MODULE_PATH和LOCAL_UNSTRIPPED_PATH
增加以下可以安装到不同的文件系统:
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED)
文件系统的选择:
TARGET_ROOT_OUT :
表示根文件系统out/target/product/generic/root
TARGET_OUT :
表示system文件系统out/target/product/generic/system
TARGET_OUT_DATA :
表示data文件系统out/target/product/generic/data


0 0
原创粉丝点击