(一) Android.mk 编译多个目标文件 编译多个模块 编译动态库 编译静态库

Android.mk      可以编译成   

                 | --  可执行文件

                 | --  动态库

                 | --  静态库

                 | --  jar包

                 | --  apk


  最简单的Android.mk

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)           //清除变量

LOCAL_MODULE := samples         //生成目标模块 

LOCAL_SRC_FILES := xxx          //目标文件 

include $(BUILD_EXECUTABLE)     //生成目标格式

  分析:

       LOCAL_PATH:= $(call my-dir)         my-dir     路径:AOSP/build/core/definitions.mk     定义模块相对路径

       include $(CLEAR_VARS)                                路径:AOSP/build/core/definitions.mk     清空除了LOCAL_PATH之外的变量

       include $(BUILD_EXECUTABLE)                    编译生成二进制文件

指定目标生成路径

       LOCAL_MODULE_PATH := $(LOCAL_PATH)      :修改生成路径为当前路径


编译多个目标文件

  1.可以将该目录下的所有文件全部穷举出来

LOCAL_SRC_FILES := xxx \

                   xxx    

  2.使用函数     函数路径    AOSP/build/core/definitions.mk

  例如想要调用当前目录所有的.c文件可以使用内部函数

$(call all-c-files-under)

  此时的mk文件可以修改成

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := test

LOCAL_C_ALL_FILES := $(call all-c-files-under)

LOCAL_SRC_FILES := $(LOCAL_C_ALL_FILES)

LOCAL_MODULE_PATH := $(LOCAL_PATH)/bin

include $(BUILD_EXECUTABLE)

编译多个模块 

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := test

LOCAL_C_ALL_FILES := $(call all-c-files-under)

LOCAL_SRC_FILES := $(LOCAL_C_ALL_FILES)

LOCAL_MODULE_PATH := $(LOCAL_PATH)/bin

include $(BUILD_EXECUTABLE)

include $(CLEAR_VARS)

LOCAL_MODULE := test2

#LOCAL_C_ALL_FILES := $(call all-c-files-under)

LOCAL_SRC_FILES := src/test.c \
                   src/test1.c

LOCAL_MODULE_PATH := $(LOCAL_PATH)/bin

include $(BUILD_EXECUTABLE)

编译动态库   libxxx.so     

include $(BUILD_SHARED_LIBRARY)

  mm |tee 

  报错

external/test/Android.mk was modified, regenerating...
build/core/shared_library.mk:13: error: libtest: LOCAL_MODULE_PATH for shared libraries is unsupported in multiarch builds, use LOCAL_MODULE_RELATIVE_PATH instead.
22:27:56 ckati failed with: exit status 1

  修改  

LOCAL_MODULE_PATH_64 := $(LOCAL_PATH)/bin

  正确的编译出来动态库 

[ 75% 15/20] target Strip (mini debug info): libtest (out/target/product/generic_x86_64/obj/SHARED_LIBRARIES/libtest_intermediates/libtest.so)
[ 80% 16/20] target Strip (mini debug info): libtest_32 (out/target/product/generic_x86_64/obj_x86/SHARED_LIBRARIES/libtest_intermediates/libtest.so)
[ 85% 17/20] Install: external/test/bin/libtest.so
[ 90% 18/20] Install: out/target/product/generic_x86_64/system/lib/libtest.so
[ 95% 19/20] build out/target/product/generic_x86_64/obj/SHARED_LIBRARIES/libtest_intermediates/libtest.so.toc
[100% 20/20] build out/target/product/generic_x86_64/obj_x86/SHARED_LIBRARIES/libtest_intermediates/libtest.so.toc

编译静态库   xxx.a

include $(BUILD_STATIC_LIBRARY)
[ 87% 14/16] target StaticLib: libtest_32 (out/target/product/generic_x86_64/obj_x86/STATIC_LIBRARIES/libtest_intermediates/libtest.a)
[ 93% 15/16] target  C: libtest <= external/test/src/test1.c
[100% 16/16] target StaticLib: libtest (out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libtest_intermediates/libtest.a)

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值