android.mk多个module,Android.mk中的变量的使用介绍(二)
废话不多说,直接分享,欢迎斧正。
Android.mk中的变量(二)
1.LOCAL_PATH
这个变量用于给出当前文件的路径。你必须在Android.mk的开头定义。例如:
LOCAL_PATH := $(call my-dir)
2.LOCAL_MODULE
这是你模块的名字,它必须是唯一的,而且不能包含空格。你必须在包含任一的$(BUILD_XXXX)脚本之前定义它。模块的名字决定了生成文件的名字。
3.LOCAL_MODULE_FILENAME
默认的情况下,编译生成的文件名为lib$(LOCAL_MODULE).so/a在使用的此变量后,会用此变量的名来覆盖系统默认的生成文件名。例如:
LOCAL_MODULE := foo-version-1
LOCAL_MODULE_FILENAME := foo生成的文件名为libfoo.so/a
4.LOCAL_SRC_FILES
要直接传递给编译器的源代码文件列表。只要列出要传递给编译器的文件即可,因为编译系统自动为你计算依赖
5.LOCAL_CPP_EXTENSION
这是一个可选变量,用来指定C++代码文件的扩展名,默认是'.cpp',但是你可以改变它,例如:
LOCAL_CPP_EXTENSION := .cxx
6.LOCAL_CPP_FEATURES
这是一个可选的变量,指示你的代码依赖于特定的C + +的功能。例如:
LOCAL_CPP_FEATURES := rtti表明你的代码使用RTTI(运行时类型信息)。
LOCAL_CPP_FEATURES := exceptions表明你的代码使用C++异常。
重要的是你可以同时使用它们:
LOCAL_CPP_FEATURES := rtti features
7.LOCAL_C_INCLUDES
一个可选的路径,相对于DNK更路径,将会在编译时附加一个文件的搜索路径(C或C++文件)例如:
LOCAL_C_INCLUDES := sources/foo
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo
8.LOCAL_CFLAGS
可选的编译器选项,在编译C和C++代码文件的时候使用。它可以指定额外的宏定义的或有用的编译选项。
重要信息:不要在 Android.mk中改变optimization/debugging级别,只要在Application.mk中指定合适的信息,就会自动地为你处理这个问题,在调试期间,会让NDK自动生成有用的数据文件。
9.LOCAL_CPPFLAGS
可选编译器标志,只对C++源文件有效,在编译器的命令行中,将会在LOCAL_CFLAGS之后执行。
10.LOCAL_CXXFLAGS
LOCAL_CPPFLAGS的别名,它是过时的,在未来发布的NDK中可能消失。
11.LOCAL_STATIC_LIBRARIES
应该链接到这个模块的静态库列表(使用BUILD_STATIC_LIBRARY生成的),这仅仅对共享库模块才有意义
12.LOCAL_SHARED_LIBRARIES
这个模块在运行时要依赖的共享库模块列表,在链接时需要,在生成文件时嵌入的相应的信息。
注意:这不会附加列出的模块到编译图,也就是,你仍然需要在Application.mk中把它们添加到程序要求的模块中。
13.LOCAL_WHOLE_STATIC_LIBRARIES
LOCAL_STATIC_LIBRARIES的变体,不同点在于,LOCAL_STATIC_LIBRARIES只会导入循环依赖所用到的库,而LOCAL_WHOLE_STATIC_LIBRARIEX会将所有的库都导入进去。
14.LOCAL_LDLIBS
编译你的模块要使用的附加的链接器选项。这对于使用”-l”前缀传递指定库的名字是有用的。
例如,下面将告诉链接器生成的模块要在加载时刻链接 /system/lib/libz.so
LOCAL_LDLIBS := -lz
15.LOCAL_ALLOW_UNDEFINED_SYMBOLS
默认情况下,在试图编译一个共享库时,任何未定义的引用将导致一个“未定义的符号”错误。这对于在你的源代码文件中捕捉错误会有很大的帮助。
然而,如果你因为某些原因,需要不启动这项检查,把这个变量 设为‘true’。注意相应的共享库可能在运行时加载失败
16.LOCAL_ARM_MODE
默认情况下,ARM目标的二进制文件将在“thumb”模式的产生,此模式下每个指令都是16位的,如果你想要生成的目标为32位指令模式,你可以定义这个变量为“arm”例如:
LOCAL_ARM_MODE := arm
17.LOCAL_ARM_NEON
定义这个变量为true,在你的C或C++源代码中允许使用ARM高级SIMD的GCC内联函数。
18.LOCAL_DISABLE_NO_EXECUTE
Android NDK r4 添加的“NX bit”安全功能,它默认是开启的,但你设置为true时可以禁用它。
19.LOCAL_DISABLE_RELRO
默认情况下,NDK编译后的代码为只读并且移植到只读的内存中,同时存在一些安全漏洞(如硬覆盖)。如果你设为“true”时可以禁用它。
20.LOCAL_EXPORT_CFLAGS
定义这个变量可以标记一组C/C++编译器,在其他模块中可以通过LOCAL_STATIC/SHARED_LIBRARIES来添加到其他的模块的LOCAL_CFLAGS中,例如:
include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_SRC_FILES := foo/foo.c
LOCAL_EXPORT_CFLAGS := -DFOO=1
include $(BUILD_STATIC_LIBRARY)
和
include $(CLEAR_VARS)
LOCAL_MODULE := bar
LOCAL_SRC_FILES := bar.c
LOCAL_CFLAGS := -DBAR=2
LOCAL_STATIC_LIBRARIES := foo
include $(BUILD_SHARED_LIBRARY)
在编译bar.c时,-DFOO=1和-DBAR=2将会传递给编译器。
21.LOCAL_EXPORT_CPPFLAGS
与LOCAL_EXPORT_CFLAGS变量功能一样,但只对C++有效
22.LOCAL_EXPORT_C_INCLUDES
与LOCAL_EXPORT_CFLAGS变量功能一样,但只对C有效
23.LOCAL_EXPORT_LDLIBS
与LOCAL_EXPORT_CFLAGS变量功能一样,但只对库的连接有效
24.LOCAL_SHORT_COMMANDS
当你的模块需要很大的资源文件或动/静态库时,设置这个变量问“true”,编译系统会使用中间件文件,能够使用库的动/静态链接语法。
25.LOCAL_FILTER_ASM
定义这个变量能够使用shell命令用来过滤LOCAL_SRC_FILES中的编译文件或生成文件。
android.mk多个module,Android.mk中的变量的使用介绍(二)相关推荐
- ansible playbook 中的变量用法相关介绍(三)----set_fact模块,跨play调用变量
1.通过set_fact定义变量 set_fact是一个模块,我们可以通过set_fact模块在tasks中定义变量,先来看一个小示例,如下 [root@server4 ~]# vim set1.ym ...
- Android --- build.gradle(Module:app)中各版本号讲解,例如targetSdkVersion
文章目录 一.minSdkVersion 二.compileSdkVersion 三.targetSdkVersion 四.Gradle和SDK版本 先抛出一个问题: 我们的应用开发的时候androi ...
- android打开蓝牙设置界面,Android 点击跳转到蓝牙设置界面
基于H5的微信支付开发详解 这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲 ...
- Android 系统(181 )----Android中各类.mk文件的编写
Android中各类.mk文件的编写 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_STATIC_JAVA_LIBRARIES := ...
- Android 编译过程介绍,Android.mk 和 Android.bp 分析, 在源码中编译 AndroidStudio 构建的 App
目录 一.Android 编译 1. 编译流程 2. Soong 介绍 3. build.sh 二.Android.mk 解析 三.Android.bp 解析 1. 模块类型 2. 模块属性 四.An ...
- 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
- 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
文章目录 I . Android Studio 中使用 Android.mk 配置动态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
- android config.mk,android编译分析之10—config.mk
config.mk可以说是android编译系统中关于配置环境的一个总的makefile,定义了编译环境的方方面面.执行完config.mk就完成了android编译系统的所有准备工作,即准备好了所有 ...
- android.mk ndk编译选项优化,Android NDK 编译脚本分析 之一
版权信息:本文为本人原创,欢迎转载,但请著明出处,并保留本版权信息. Android NDK编译脚本编写起来还是是比较简单条理的,然而它的语法和传统的linux GNU Make编译脚本的编写似乎有很 ...
最新文章
- 前方高能 | 容器化应用操作原来可以这样简单
- 241. Different Ways to Add Parentheses
- Python+Appium寻找蓝牙/wifi匹配
- C语言enum关键字
- Python 中的黑暗角落(二):生成器协程的调度问题
- Ubuntu通过apt-get安装指定版本和查询软件源有多少个版本
- numpy常用的一种高效切片方式
- 干货 | 利用SPSS进行高级统计分析第二期
- amazon alexa 大陆安装调试
- 汽车应急启动电源,拉杆音箱,蓝牙音响升压芯片合集,DCDC大功率外置MOS升压芯片10W,200W,400W
- DELL win10插入耳机后声音仍然外放(亲测有效)
- java.lang.IllegalArgumentException: interface UserMapper is not visible from class loader
- AliOSS上传图片
- 极致Review,阿里绩效管理的核心工具
- 使用HTML+CSS技术制作篮球明星介绍网站
- 目睹太多读博惨案之后,清华姚班助理教授写了个读博决策树
- 英雄连2显示无法连接服务器,英雄连2steam无法连接到更新服务器 | 手游网游页游攻略大全...
- 无锡清空win8应用商店缓存_微软surface常用清理内存缓存解决办法
- 微信扫描二维码跳转页面
- SQL笔试题(持续更新)