LOCAL_PATH
一个Android.mk文件必须以LOCAL_PATH := 是引用某变量的值,上面$(call my-dir)的意思是调用编译系统提供的my-dir的值,然后赋值给LOCAL_PATH。
CLEAR_VARS
CLEAR_VARS由编译系统提供,让GNU MAKEFILE为用户清除LOCAL_XXX的变量(例如LOCAL_MODULE, LOCAL_STATIC_LIBRARIES等),虽然它可以清除许多LOCAL_XXX的定义,但是不会清除LOCAL_PATH变量的定义,可以简单理解为:如果清除成功,则编译系统根本就找不到需要编译的对象。
用法:include $(CLEAR_VARS)
LOCAL_MODULE
此变量必须要定义,以标识此Android.mk文件所要编译的某个模块,且此名称必须是唯一的,如果名称不唯一,在编译时会报错,且此名称中不能包含空格。指定此名称后,编译出目标文件后,编译系统为自动为目标文件添加前缀和后缀,例如:你想编译名称为foo的共享库,则最终生成的文件名为:libfoo.so。
LOCAL_SRC_FILES
用以指定要编译的源文件路径,用户不需要列出里面的具体文件名,编译系统会自动索引出里面的文件。
使用Android.mk可生成可执行程序、动态库和静态库
1.编译出可执行程序的模板
LOCAL_PATH := (BUILD_EXECUTABLE)
解释:LOCAL_C_INCLUDES指定要加入的所需要包含的头文件路径
LOCAL_STATIC_LIBRARIES加入所需要链接的静态库(.a)的名称
LOCAL_SHARED_LIBRARIES中加入所需要链接的动态库(.so)的名称
LOCAL_MODULE表示模块最终的名称
BUILD_EXECUTABLE表示编译出可执行文件,此时就要求main.c文件中有main方法,因为main方法是程序的入口
2.编译静态库的模板
LOCAL_PATH := (CLEAR_VARS)
LOCAL_SRC_FILES:= /
helloworld.c
LOCAL_MODULE:= libtest_static
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include (call my-dir)
include (BUILD_SHARED_LIBRARY)
网友评论