Android.mk 中常用“LOCAL_” 变量
编写模块的编译文件,实际就是定义一系列以“LOCAL_”开头的编译变量,因此我们有必要弄明白这些变量的具体含义。下面是一些经常使用的LOCAL_编译变量的说明:
变量名 |
说明 |
LOCAL_ASSET_FILES |
编译APK文件时用于指定资源列表,通常写成 LOCAL_ASSET_FILES += $(call find-subdir-assets)。 |
LOCAL_CC |
自定义C编译器来代替缺省的编译器。 |
LOCAL_CXX |
自定义C++编译器来代替缺省的编译器。 |
LOCAL_CFLAGS |
定义额外的C/C++编译器的参数。 |
LOCAL_CPPFLAGS |
仅定义额外的C++编译器的参数,不用在C编译器中。 |
LOCAL_CPP_EXTENSION |
自定义C++源文件的后缀。例如:LOCAL_CPP_EXTENSION := .cc 注意:一旦定义,模块中所有的源文件都必须使用该后缀,目前不支持混合后缀。 |
LOCAL_C_INCLUDES |
指定头文件的搜索路径。 |
LOCAL_FORCE_STATIC_EXECUTABLE |
如果编译时候需要链接的库有共享和静态两者共存的情况。设定此变量值为true将会优先链接静态库。通常这种情况只会在编译root/sbin目录下的应用才会用到,因为他们执行的时间比较早,文件系统的其他部分还没有加载。 |
LOCAL_GENERATED_SOURCES |
指定由系统自动生成的文件列表。 |
LOCAL_MODULE_TAGS |
定义模块标签,Build系统根据标签决定哪些模块被安装。 |
LOCAL_REQUIRED_MODULES |
指定依赖的模块。一旦本模块被安装,通过此变量指定的模块也将被安装 |
LOCAL_JAVACFLAGS |
定义额外的javac编译器的参数 |
LOCAL_JAVA_LIBRARIES |
指定模块依赖的java共享库 |
LOCAL_LDFLAGS |
定义链接器ld的参数 |
LOCAL_LDLIBS |
指定模块链接时依赖的库。如果这些库文件不存在,并不会引发对它们的编译。这是此变量和LOCAL_SHARED_LIBRARIES的主要区别。 |
LOCAL_NO_MANIFEST |
在一个资源apk中可以指定此变量为true,表示此apk文件没有AndroidManifest.xml文件。 |
LOCAL_PACKAGE_NAME |
指定APP应用名称。 |
LOCAL_PATH |
指定Android.mk文件所在的目录。 |
LOCAL_POST_PROCESS_COMMAND |
在编译host相关的模块时,可以用此变量定义一条命令在link完成后执行。 |
LOCAL_PREBUILT_LIBS |
指定预编译c/c++动态和静态库列表。用于预编译模块定义中。 |
LOCAL_PREBUILT_JAVA_LIBRARIES |
指定预编译java库列表。用于预编译模块定义中。 |
LOCAL_SHARED_LIBRARIES |
指定模块依赖的c/c++共享库列表。 |
LOCAL_SRC_FILES |
指定源文件列表。 |
LOCAL_STATIC_LIBRARIES |
指定依赖的c/c++静态库列表。 |
LOCAL_MODULE |
除应用(apk)以LOCAL_PACKAGE_NAME指定模块名以外,其余的模块都以LOCAL_MODULE指定模块名。 |
LOCAL_MODULE_PATH |
指定模块在目标系统的安装路径。 |
LOCAL_UNSTRIPPED_PATH |
指定模块的unstripped 版本在out目录下的保存路径。 |
LOCAL_WHOLE_STATIC_LIBRARIES |
这个变量也是定义了模块依赖的静态库列表,和LOCAL_STATIC_LIBRARIES类似。但是通过这个变量定义,链接时链接器不会将静态库中无人调用的代码去掉。 |
LOCAL_YACCFLAGS |
指定yacc的参数。 |
LOCAL_ADDITIONAL_DEPENDENCIES |
指定本模块的依赖。用在不方便使用别的方法来指定依赖关系时。 |
LOCAL_BUILT_MODULE |
指定编译时存放中间文件的目录。 |
LOCAL_INSTALLED_MODULE |
指定模块的安装路径。 |
LOCAL_MODULE_CLASS |
定义模块的分类。根据分类,生成的模块文件会安装到目标系统相应的目录下。例如:APPS:安装到/system/app下;SHARED_LIBRARIES:安装到/system/lib下;EXECUTABLES:安装到/system/bin下;ETC:安装到/system/etc下;但是如果同时用LOCAL_MOULE_PATH定义了路径,则安装到该路径。 |
LOCAL_MODULE_NAME |
指定模块的名称。但是目前系统中用到它的实例。 |
LOCAL_MODULE_SUFFIX |
指定当前模块的后缀。一旦指定,系统在产生目标文件时,会以模块名加后缀来创建目标文件 |
LOCAL_STRIP_MODULE |
指定模块是否需要被strip,该模块是可执行文件或动态库才能使用该变量。 |
LOCAL_STRIPPABLE_MODULE |
此变量的值通常由Build系统设置,一般可执行文件和动态库被设为true。 |
LOCAL_SYSTEM_SHARED_LIBRARIES |
此变量在编译系统的基本库,如:libc,libm,libdl时,用来定义这些库的依赖库。通常在应用模块定义中不应使用该变量。 |
LOCAL_PRELINK_MODULE |
编译.so模块时,定义是否需要prelink。prelink是通过预链接的方式来加快程序启动速度。如果要设置此值为true,要先在build/core/prelink-linux-arm.map文件中定义该库的地址和大小,否则报错。但是在Android4.2以后的代码中找不到文件prelink-linux-arm.map了,在build目录下也搜寻不到这个变量。可能Android已经取消了prelink的功能。 |
参考:http://blog.sina.com.cn/s/blog_dae890d10101f01f.html
Android.mk 中常用“LOCAL_” 变量的更多相关文章
- Android.mk中的经常使用语法
Android.mk编译文件是用来向Android NDK描写叙述你的C,C++源码文件的, 今天查了一些经常使用的的语法. 一 概述: 一个Android.mk文件用来向编译系统描写叙述你的源码. ...
- [转]编写Android.mk中的LOCAL_SRC_FILES的终极技巧
希望看原文的请移步:[原创]编写Android.mk中的LOCAL_SRC_FILES的终极技巧 问题的引入 在使用NDK编译C/C++项目的过程中,免不了要编写Android.mk文件,其中最重要的 ...
- 编写Android.mk中的LOCAL_SRC_FILES的终极技巧(转)
转自:http://blog.csdn.net/fu_zk/article/details/12836431 问题的引入 在使用NDK编译C/C++项目的过程中,免不了要编写Android.mk文件, ...
- Android.mk中添加宏定义
在Boardconfig.mk 中添加一个 IS_FLAG := true 由于Boardconfig.mk和各目录的Android.mk是相互关联的 所以我们可以在Android.mk 中添加 一个 ...
- Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令
Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...
- Android开发中常用的库总结(持续更新)
这篇文章用来收集Android开发中常用的库,都是实际使用过的.持续更新... 1.消息提示的小红点 微信,微博消息提示的小红点. 开源库地址:https://github.com/stefanjau ...
- 【转】Update: Android.mk 中的 LOCAL_SRC_FILES, LOCAL_C_INCLUDES
看原文请移步:Update: Android.mk 中的 LOCAL_SRC_FILES, LOCAL_C_INCLUDES 我在先前的两篇post 编写Android.mk中的LOCAL_SRC_F ...
- [转]编写 android.mk 中 LOCAL_C_INCLUDES 的技巧
看原文请移步:编写 android.mk 中 LOCAL_C_INCLUDES 的技巧 在编写android.mk的过程中,免不了要修改LOCAL_C_INCLUDES来设置头文件的include目录 ...
- selenium.webdriver.common.keys 模块中常用的变量
表11-5 selenium.webdriver.common.keys 模块中常用的变量属性 含义Keys.DOWN, Keys.UP, Keys.LEFT,Keys.RIGHT 键盘箭头键Keys ...
随机推荐
- [ASE][Daily Scrum]11.12
这几天Jiafan同学回学校去了,服务器的问题暂时未解决.继续搭建服务器中: View Shilin Liu 修复tank的错位问题 产生残缺地图 Client Jiafan Zhu( ...
- 背水一战 Windows 10 (62) - 控件(媒体类): InkCanvas 保存和加载, 手写识别
[源码下载] 背水一战 Windows 10 (62) - 控件(媒体类): InkCanvas 保存和加载, 手写识别 作者:webabcd 介绍背水一战 Windows 10 之 控件(媒体类) ...
- python 数据类型三 (字典)
一.字典的介绍 字典(dict)是python中唯一的一个映射类型,它是以{}括起来的键值对组成,在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保存 ...
- 记一次线上事故的JVM内存学习
今天线上的hadoop集群崩溃了,现象是namenode一直在GC,长时间无法正常服务.最后运维大神各种倒腾内存,GC稳定后,服务正常.虽说全程在打酱油,但是也跟着学习不少的东西. 第一个问题:为什么 ...
- Oracle SQL Developer连接报错以及链接oracle的sqlplus出现协议适配器错误
之前用的好好的Oracle SQL Developer,不知道是不是匆忙关闭软件啥东西没保存或是删了什么东西,今天突然用不了的. 大清早的,打开Oracle SQL Developer,就给我一个惊喜 ...
- linux中jdk的安装与配置
一.卸载系统已有的JDK 1.查看已安装的jdk rpm -qa|grep jdk 2.卸载jdk rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1. ...
- java 简单认识移位运算符和位运算符
移位运算符和位运算符本质上都是操作二进制位,因为计算机存储的是二进制数据,运算效率相对较高. 移位运算符:把整数的二进制位进行左移或右移 .左移一位,相当于这个数乘以2, 右移一位,相当于这个数除以2 ...
- dubbo管控台安装
1. jdk安装 # cp installpkgs/jdk-7u67-linux-x64_tar_gz /usr/local # tar -zxf jdk-7u67-linux-x64_tar_g ...
- ES6 模块定义 export 与 import
一般导出 export math.js export function* getFibo() { let a = 1; let b = 1; yield a; yield b; while (true ...
- Linux在终端和控制台下复制粘贴命令快捷键
1.在终端下: (1)复制命令:Ctrl + Shift + C 组合键. (2)粘贴命令:Ctrl + Shift + V 组合键. 2.在控制台下:(即vi编辑过程中) (1)复制命令:Ctrl ...