废话不多说,直接分享,欢迎斧正。

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中的变量的使用介绍(二)相关推荐

  1. ansible playbook 中的变量用法相关介绍(三)----set_fact模块,跨play调用变量

    1.通过set_fact定义变量 set_fact是一个模块,我们可以通过set_fact模块在tasks中定义变量,先来看一个小示例,如下 [root@server4 ~]# vim set1.ym ...

  2. Android --- build.gradle(Module:app)中各版本号讲解,例如targetSdkVersion

    文章目录 一.minSdkVersion 二.compileSdkVersion 三.targetSdkVersion 四.Gradle和SDK版本 先抛出一个问题: 我们的应用开发的时候androi ...

  3. android打开蓝牙设置界面,Android 点击跳转到蓝牙设置界面

    基于H5的微信支付开发详解 这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲 ...

  4. Android 系统(181 )----Android中各类.mk文件的编写

    Android中各类.mk文件的编写 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_STATIC_JAVA_LIBRARIES := ...

  5. Android 编译过程介绍,Android.mk 和 Android.bp 分析, 在源码中编译 AndroidStudio 构建的 App

    目录 一.Android 编译 1. 编译流程 2. Soong 介绍 3. build.sh 二.Android.mk 解析 三.Android.bp 解析 1. 模块类型 2. 模块属性 四.An ...

  6. 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )

    文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  7. 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )

    文章目录 I . Android Studio 中使用 Android.mk 配置动态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  8. android config.mk,android编译分析之10—config.mk

    config.mk可以说是android编译系统中关于配置环境的一个总的makefile,定义了编译环境的方方面面.执行完config.mk就完成了android编译系统的所有准备工作,即准备好了所有 ...

  9. android.mk ndk编译选项优化,Android NDK 编译脚本分析 之一

    版权信息:本文为本人原创,欢迎转载,但请著明出处,并保留本版权信息. Android NDK编译脚本编写起来还是是比较简单条理的,然而它的语法和传统的linux GNU Make编译脚本的编写似乎有很 ...

最新文章

  1. 前方高能 | 容器化应用操作原来可以这样简单
  2. 241. Different Ways to Add Parentheses
  3. Python+Appium寻找蓝牙/wifi匹配
  4. C语言enum关键字
  5. Python 中的黑暗角落(二):生成器协程的调度问题
  6. Ubuntu通过apt-get安装指定版本和查询软件源有多少个版本
  7. numpy常用的一种高效切片方式
  8. 干货 | 利用SPSS进行高级统计分析第二期
  9. amazon alexa 大陆安装调试
  10. 汽车应急启动电源,拉杆音箱,蓝牙音响升压芯片合集,DCDC大功率外置MOS升压芯片10W,200W,400W
  11. DELL win10插入耳机后声音仍然外放(亲测有效)
  12. java.lang.IllegalArgumentException: interface UserMapper is not visible from class loader
  13. AliOSS上传图片
  14. 极致Review,阿里绩效管理的核心工具
  15. 使用HTML+CSS技术制作篮球明星介绍网站
  16. 目睹太多读博惨案之后,清华姚班助理教授写了个读博决策树
  17. 英雄连2显示无法连接服务器,英雄连2steam无法连接到更新服务器 | 手游网游页游攻略大全...
  18. 无锡清空win8应用商店缓存_微软surface常用清理内存缓存解决办法
  19. 微信扫描二维码跳转页面
  20. SQL笔试题(持续更新)

热门文章

  1. 运行Linux下APAP程序
  2. 论文阅读:Knowledge Distillation: A Survey 知识蒸馏综述(2021)
  3. 为网站搭建域名(腾讯云)
  4. 戴尔计算机软件的安装,戴尔电脑如何安装系统
  5. 是谁不让访问用户空间
  6. 【51Nod】1266 蚂蚁
  7. C语言编程丨都说黑客一定要学C语言,这到底是为什么呢?
  8. TI AM570x浮点DSP C66x + ARM Cortex-A15开发板的Watchdog接口
  9. 适合编写python的笔记本_适合编程的笔记本
  10. 3D图形学(10):游戏中的加速渲染算法