Android.mk学习笔记

Android.mk学习笔记


转载链接:https://blog.csdn.net/ucxiii/article/details/52097059


LOCAL_PATH := $(call my-dir)
这条语句出现在Android.mk最开始。由于我们将所有源码等文件都存在了当前目录或子目录,因此调用my-dir这个函数来告知编译器所编译的模块在mk所在当前目录下。

LOCAL_MODULE
这个参数是模块的名称,要求全局唯一并且不能带空格。
可以简单试验一下,找到任意一个模块的目录,例如device/generic/goldfish,这是虚拟机设备路径,新建一个文件夹mymodule,将其他模块(如gps)的Android.mk拷贝过来。
接下来在源码目录执行make,由于我们没有修改Android.mk文件的内容,导致出现了两个gps模块,因此编译报错:

including ./device/generic/goldfish/mymodule/Android.mk ...
build/core/base_rules.mk:157: *** device/generic/goldfish/mymodule: MODULE.TARGET.SHARED_LIBRARIES.gps.goldfish already defined by device/generic/goldfish/gps.  Stop.

#### make failed to build some targets (31 seconds) ####
 


include $(CLEAR_VARS)
此参数要和后面的include $(BUILD_*)成对出现。每个模块编以前都要使用这条语句。
CLEAR_VARS会通知编译系统清除一系列LOCAL环境变量LOCAL_XXX。

include $(BUILD_X)
其中:
BUILD_SHARED_LIBRARY代表将模块编译成动态库
BUILD_STATIC_LIBRARY代表将模块编译成静态库

接下来可以再测试一下,将CLEAR_VARS从Android.mk中删除,但保留BUILD_SHARED_LIBRARY,进行编译,则会报错:

including ./device/generic/goldfish/mymodule/Android.mk ...
build/core/shared_library_internal.mk:17: *** device/generic/goldfish/mymodule: Illegal use of OVERRIDE_BUILT_MODULE_PATH.  Stop. 

#### make failed to build some targets (31 seconds) ####
 

当然把这一对参数都删掉整个rom是可以编译通过的,但因为在这个模块的Android.mk中没有声明编译库的类型,等于没有任何操作,仅仅include了一下。


————————————————
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值