Android.mk 语法

Android.mk 语法

1.Build Layers

Build Layers描述的是产品的硬件配置情况,据此make时选择不同的配置和模块。按照从上到下的顺序,Build Layer分成4层。
Layer    sample    Note
Arch    arm, x86    处理器的种类
Board    -    板子类型的代号
Device    -    device配置的类型代号
Product    -    具体产品的代号

2.重要的Makefile脚本

Android.mk:编译源码mk文件,每个module和package目录下有这么一个文件
main.mk:定义了编译全部代码的依赖关系
config.mk:用于配置编译系统,决定如何编译
envsetup.mk:定义了编译环境配置
product_config.mk:读取AndrodProducts.mk生成TARGET_DEVICE变量
AndroidProducts.mk:定义某厂商所有产品文件列表
BoardConfig.mk:定义开发板软件相关配置项,将来影响系统条件 编译。

3.Android.mk 文件解析:

https://www.cnblogs.com/gamesky/p/11369156.html\

3.1.变量分析:

A.LOCAL_PATH,调用my-dir(在defination.mk中定义),得到当前路径

B.LOCAL_MODULE_TAGS,取值范围

C.LOCAL_SRC_FILES,app的所有源码,可以调用all-java-files-under得到,如果是java源码的话。

D.LOCAL_PACKAGE_NAME,package的名字,这个名字在脚本中将标识这个app或package。

E.$(CLEAR_VARS)指的是clear_vars.mk,脚本会清空所有LOCAL_xxx的变量,不影响后面这些变量的使用。

F.$(BUILD_PACKAGE)    指的是package.mk生成规则

G.all-makefiles-under   包含当前目录下所有的mk脚本文件。

3.2.源码示例:

  • 编译多文件并生成可执行文件
LOCAL_PATH:=$(call my-dir)   //获取程序当前路径


#include $(CLEAR_VARS)       //清除环境变量
#LOCAL_MODULE:=test          //生成模块名字
#LOCAL_MODULE_PATH:=$(LOCAL_PATH)/bin   //指定生成的可执行文件路径

//两种方法定义搜索源文件路径
//指定源文件当前路径后边所有的子路径
#LOCAL_SRC_FILES:=./src/test.c   ./src/add.c

#LOCAL_SRC_FILES:=$(call all-c-files-under,src)
#include $(BUILD_EXECUTABLE)
  • 制作动态库
include $(CLEAR_VARS)
LOCAL_MODULE:=libadd
LOCAL_SRC_FILES:=./src/add.c
LOCAL_MODULE_PATH:=$(LOCAL_PATH)/lib   //生成指定生成的库文件路径
include $(BUILD_SHARED_LIBRARY)
  • 生成静态库 静态库路径不用指定,默认存放于out目录下。
include $(CLEAR_VARS)
LOCAL_MODULE:=libadd
LOCAL_SRC_FILES:=./src/add.c
#LOCAL_MODULE_PATH:=$(LOCAL_PATH)/lib
include $(BUILD_STATIC_LIBRARY)
//指定第三方库文件的宏LOCAL_LDFLAGS
include $(CLEAR_VARS)
LOCAL_MODULE:=test
LOCAL_MODULE_PATH:=$(LOCAL_PATH)/bin         //将生成的可执行文件存放位置
LOCAL_SRC_FILES:=./src/test.c
//两种调用库文件方法
#LOCAL_LDFLAGS:=-L $(LOCAL_PATH)/lib -ladd  //调用动态库文件法1
LOCAL_LDFLAGS:=$(LOCAL_PATH)/lib/libadd.so  //调用动态库文件法2
//生成可执行程序文件 
include $(BUILD_EXECUTABLE)
//库文件找不到的时候
export LD_LIBRARY_PATH-.    导入环境变量
  • 调用系统库文件
include $(CLEAR_VARS)
LOCAL_MODULE:=mylog
LOCAL_MODULE_PATH:=$(LOCAL_PATH)/bin
LOCAL_SRC_FILES:=./src/mylog.c
LOCAL_SHARED_LIBRARIES:=liblog    //无需路径,只需库名字即可
#LOCAL_STATIC_LIBRARIES  //静态库
include $(BUILD_EXECUTABLE)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值