linux andorid.mk文件解析
2015-08-13 10:37
344 查看
Android.mk内的变量定义
3.1 LOCAL_PATH
一个Android.mk file首先必须定义好LOCAL_PATH变量。它用于在开发树中查找源文件。例如:
1.LOCAL_PATH:= $(call my-dir)
-
宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)
3.2 include $( CLEAR_VARS)
宏CLEAR_VARS 由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES, 等等...),除LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。
3.3 LOCAL_SRC_FILES
本次需要编译的源文件
3.4 LOCAL_SHARED_LIBRARIES
本次编译需要链接的动态链接库文件,即.so文件
3.5 LOCAL_STATIC_LIBRARIES
静态链接库.
3.6 LOCAL_C_INCLUDES
本次编译需要包含的头文件,一个相对于当前目录可选的路径名单,当编译所有的源文件(C,C++和汇编)时,它将被添加进include搜索路径。例如:
LOCAL_C_INCLUDES := sources/foo
或者甚至:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo
3.6 LOCAL_LDLIBS
本次编译的链接选项,相当于gcc -l后的参数
3.7 LOCAL_CFLAGS
同样是编译选项,相当于gcc -O后面的参数
3.8 LOCAL_MODULE
生成的模块名,这个变量必须定义,表示make后将要生成的文件的名字
3.9 LOCAL_PACKAGE_NAME
apk文件名
3.10 LOCAL_MODULE_TAGS :=user eng tests optional
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
4 include
include可Android多以这样的形式出现,如:include $( CLEAR_VARS),include $(BUILD_SHARED_LIBRARY).其实这个include可以理解成"执行"的意思,那么执行什么呢?当然是看后边的宏了.
宏CLEAR_VARS已经在3.2节中介绍过了,表示清除一些变量.
宏BUILD_SHARED_LIBRARY表示生成共享库,即生成.so文件
因此include $(BUILD_SHARED_LIBRARY)就是指定在/system/lib/目录下生成一个lib$(LOCAL_MOUDULE).so文件,同样类型的宏如下:
•CLEAR_VARS 清除LOCAL_xxx变量
•BUILD_SHARED_LIBRARY 在/system/lib/目录下生成lib$(LOCAL_MOUDULE).so文件
BUILD_STATIC_LIBRARY 生成lib$(LOCAL_MOUDULE).a文件
•BUILD_EXECUTABLE 在/system/bin/目录下生成可执行文件
BUILD_PACKAGE 编译成一个apk文件
3.1 LOCAL_PATH
一个Android.mk file首先必须定义好LOCAL_PATH变量。它用于在开发树中查找源文件。例如:
1.LOCAL_PATH:= $(call my-dir)
-
宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)
3.2 include $( CLEAR_VARS)
宏CLEAR_VARS 由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES, 等等...),除LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。
3.3 LOCAL_SRC_FILES
本次需要编译的源文件
3.4 LOCAL_SHARED_LIBRARIES
本次编译需要链接的动态链接库文件,即.so文件
3.5 LOCAL_STATIC_LIBRARIES
静态链接库.
3.6 LOCAL_C_INCLUDES
本次编译需要包含的头文件,一个相对于当前目录可选的路径名单,当编译所有的源文件(C,C++和汇编)时,它将被添加进include搜索路径。例如:
LOCAL_C_INCLUDES := sources/foo
或者甚至:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo
3.6 LOCAL_LDLIBS
本次编译的链接选项,相当于gcc -l后的参数
3.7 LOCAL_CFLAGS
同样是编译选项,相当于gcc -O后面的参数
3.8 LOCAL_MODULE
生成的模块名,这个变量必须定义,表示make后将要生成的文件的名字
3.9 LOCAL_PACKAGE_NAME
apk文件名
3.10 LOCAL_MODULE_TAGS :=user eng tests optional
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
4 include
include可Android多以这样的形式出现,如:include $( CLEAR_VARS),include $(BUILD_SHARED_LIBRARY).其实这个include可以理解成"执行"的意思,那么执行什么呢?当然是看后边的宏了.
宏CLEAR_VARS已经在3.2节中介绍过了,表示清除一些变量.
宏BUILD_SHARED_LIBRARY表示生成共享库,即生成.so文件
因此include $(BUILD_SHARED_LIBRARY)就是指定在/system/lib/目录下生成一个lib$(LOCAL_MOUDULE).so文件,同样类型的宏如下:
•CLEAR_VARS 清除LOCAL_xxx变量
•BUILD_SHARED_LIBRARY 在/system/lib/目录下生成lib$(LOCAL_MOUDULE).so文件
BUILD_STATIC_LIBRARY 生成lib$(LOCAL_MOUDULE).a文件
•BUILD_EXECUTABLE 在/system/bin/目录下生成可执行文件
BUILD_PACKAGE 编译成一个apk文件
相关文章推荐
- 使用 Libki 来管理公共用户访问计算机
- 微型计算机的始祖:Altair 8800
- 通过手机、电脑远程开关机,Windows和linux机手机,电脑相互控制
- php实现用手机关闭计算机(电脑)的方法
- 用IE重起计算机或者关机的示例代码
- 一张图告诉你计算机编程语言的发展历史
- 计算机科学中32个常用的基础算法
- 不能在本地计算机启动 apache2.2解决方法
- python获取本地计算机名字的方法
- python获取当前计算机cpu数量的方法
- 第一台冯·诺伊曼结构量子计算机售价1000万美元
- 首台“混合”超级计算机突破千万亿次计算大关
- 代理服务器
- 回顾UNIX LINUX BSD架构
- 2008年最新最全计算机相关精品资源学习“宝典”系列典藏版电子书
- OSTA考试认证详细介绍之计算机
- 电脑硬件启动顺序
- Vmware安装报msi错误解决方案(官方翻译中文版)
- mysql修行练级之mysql新手入门常用命令
- Windows Server 2003的基本安装方法