美文网首页
Android.mk

Android.mk

作者: Doctor_Xu | 来源:发表于2020-03-25 00:17 被阅读0次

    LOCAL_PATH

    一个Android.mk文件必须以LOCAL_PATH := (call my-dir)开始 函数 my-dir由编译系统提供,它返回当前路径,即当前包含此Android.mk文件的目录。 :=用于赋值,是引用某变量的值,上面$(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 := (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)
    解释:LOCAL_C_INCLUDES指定要加入的所需要包含的头文件路径
    LOCAL_STATIC_LIBRARIES加入所需要链接的静态库(.a)的名称
    LOCAL_SHARED_LIBRARIES中加入所需要链接的动态库(
    .so)的名称
    LOCAL_MODULE表示模块最终的名称
    BUILD_EXECUTABLE表示编译出可执行文件,此时就要求main.c文件中有main方法,因为main方法是程序的入口
    2.编译静态库的模板
    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) 3.编译动态库的模板 LOCAL_PATH :=(call my-dir)
    include (CLEAR_VARS) LOCAL_SRC_FILES:= / helloworld.c LOCAL_MODULE:= libtest_shared TARGET_PRELINK_MODULES := false \#LOCAL_C_INCLUDES := \#LOCAL_STATIC_LIBRARIES := \#LOCAL_SHARED_LIBRARIES := include(BUILD_SHARED_LIBRARY)

    相关文章

      网友评论

          本文标题:Android.mk

          本文链接:https://www.haomeiwen.com/subject/hbezyhtx.html