LOCAL_STATIC_LIBRARIES
PREBUILT_STATIC_LIBRARY 与PREBUILT_SHARED_LIBRARY

静态库可生成共享库
Android.mk 文件必须首先定义 LOCAL_PATH 变量:
LOCAL_PATH := $(call my-dir)
此变量表示源文件在开发树中的位置。在这里,构建系统提供的宏函数 my-dir 将返回当前目录(包含 Android.mk 文件本身的目录)的路径。
下一行声明 CLEAR_VARS 变量,其值由构建系统提供。
include $(CLEAR_VARS)
CLEAR_VARS 变量可为您清除许多 LOCAL_XXX 变量,例如 LOCAL_MODULE、LOCAL_SRC_FILES 和 LOCAL_STATIC_LIBRARIES。 不会清除 LOCAL_PATH。
枚举源文件,以空格分隔多个文件:
LOCAL_SRC_FILES := hello-jni.c
LOCAL_SRC_FILES 变量必须包含要构建到模块中的 C 和/或 C++ 源文件列表。
定义自己的变量,建议在名称前附加 MY_。
PREBUILT_SHARED_LIBRARY:
这里的 LOCAL_SRC_FILES 值不能是源文件,而必须是指向预建共享库的单一路径,例如 foo/libfoo.so
也可使用 LOCAL_PREBUILTS 变量引用另一个模块中的预建库。
务必使用 Unix 样式的正斜杠 (/)

LOCAL_CPP_FEATURES: 建议使用此变量,而不要直接在 LOCAL_CPPFLAGS 定义中启用 -frtti 和 -fexceptions。使用此变量可让构建系统对每个模块使用适当的标志。使用 LOCAL_CPPFLAGS 会导致编译器对所有模块使用所有指定的标志
指明您的代码依赖于特定 C++ 功能。对于预构建的库,此变量还可声明二进制文件依赖哪些功能
描述值的顺序不重要。

LOCAL_C_INCLUDES: include 搜索路径
在通过 LOCAL_CFLAGS 或 LOCAL_CPPFLAGS 设置任何对应的 include 标志之前定义此变量。
LOCAL_CFLAGS
在构建 C 和 C++ 源文件时要传递的编译器标志
在 android-ndk-1.5_r1 中,相应的标志只适用于 C 源文件,而不适用于 C++ 源文件。
使用 LOCAL_CPPFLAGS 只为 C++ 源文件指定标志
指定其他 include 路径:
LOCAL_CFLAGS += -I<path>,但使用 LOCAL_C_INCLUDES 更好

LOCAL_STATIC_LIBRARIES
当前模块依赖的静态库模块列表
如果当前模块是共享库或可执行文件,此变量将强制这些库链接到生成的二进制文件
如果当前模块是静态库,表示依赖当前模块的模块也会依赖列出的库。
LOCAL_SHARED_LIBRARIES
模块在运行时依赖的共享库模块列表
LOCAL_WHOLE_STATIC_LIBRARIES
 LOCAL_STATIC_LIBRARIES 的变体,表示链接器应将相关的库模块视为整个存档。 如需了解有关整个存档的详细信息,请参阅 GNU 链接器关于 --whole-archive 标志的文档
当多个静态库之间具有循环相依关系时,此变量很有用。 使用此变量构建共享库时,将会强制构建系统将所有对象文件从静态库添加到最终二进制文件。 但在生成可执行文件时不会发生这样的情况。
LOCAL_LDLIBS
构建共享库或可执行文件时的链接器标志列表,可让您使用 -l 前缀传递特定系统库的名称。 例如,以下示例指示链接器生成在加载时链接到 /system/lib/libz.so 的模块:
LOCAL_LDLIBS := -lz
如需了解此 NDK 版本中可以链接的已公开系统库列表,请参阅 Android NDK 原生 API
LOCAL_LDFLAGS
构建共享库或可执行文件时供构建系统使用的其他链接器标志列表
如果为静态库定义此变量,构建系统会忽略它,并且 ndk-build 会显示一则警告。

并非所有基于 ARMv7 的 CPU 都支持 NEON 指令集扩展。因此,必须执行运行时检测以便在运行时安全地使用此代码。 如需了解详细信息,请参阅 NEON 支持cpufeatures 库
NDK 提供的函数宏
使用 $(call <function>) 对它们估值;它们返回文本信息。
all-subdir-makefiles
返回位于当前 my-dir 路径所有子目录中的 Android.mk 文件列表。
import-module
用于按模块的名称查找和包含模块的 Android.mk 文件的函数。 典型的示例如下所示:
$(call import-module,<name>)
在此示例中,构建系统查找 NDK_MODULE_PATH 环境变量引用的目录列表中以 <name> 标记的模块,并且自动为您包含其Android.mk 文件。

Android.mk解析的更多相关文章

  1. Android.mk相关知识

    Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握jni,就必须熟练掌握Andr ...

  2. Android.mk详解

    Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握jni,就必须熟练掌握Andr ...

  3. Android.mk

    Introduction: Android.mk编译文件是用来向Android NDK描述你的C,C++源代码文件的, 这篇文档描述了它的语法.在阅读下面的内容之前,假定你已经阅读了docs/OVER ...

  4. 【整理修订】Android.mk详解

    Android.mk详解 1. Android.mk 的应用范围 Android.mk文件是GNU Makefile的一小部分,它用来对Android程序进行编译. 一个Android.mk文件可以编 ...

  5. 4.android.mk编写规范

    Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握jni,就必须熟练掌握Andr ...

  6. android.mk android源码编译

    http://www.cnblogs.com/chenbin7/archive/2013/01/05/2846863.html Android.mk简单分析 2013-01-05 22:51 by . ...

  7. Android.mk的用法和基础

    一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个 ...

  8. Android.mk简介<转>

    文章参照:http://blog.sina.com.cn/s/blog_67d8d7060100q8un.html Android.mk文件是GNU Makefile的一小部分,它用来对Android ...

  9. Android.mk简介

    http://www.cnblogs.com/hnrainll/archive/2012/12/18/2822711.html Android.mk文件是GNU Makefile的一小部分,它用来对A ...

随机推荐

  1. SQLite 使用技巧

    http://blog.csdn.net/beifengdelei/article/details/7166056 SQLite自增ID自段使用方法为 INTEGER PRIMARY KEY AUTO ...

  2. isNaN使用的注意事项

    NaN是JavaScript的特殊值,表示 Not a Number 用法: isNaN(numValue); 如果值是 NaN, 那么 isNaN 函数返回 true ,否则返回 false . 注 ...

  3. 渗透笔记0x00

    今天朋友在入侵织梦的网站系统,通过最新的Exp获得了织梦后台的账号和密码 账号:admin 密码:abc123456 但是,找来找去找不到后台,就让我提权试试. 我看了下:http://pxc.nci ...

  4. cpp面向对象编程

    如下图,先建好文件, 这里用的是Visual studio 2010 当然也可以用eclipse for cpp,如下图: AbstractShape.h #ifndef ABSTRACTSHAPE_ ...

  5. 认识多渲染目标(Multiple Render Targets)技术 【转】

    认识多渲染目标(Multiple Render Targets)技术 首先,渲染到纹理是D3D中的一项高级技术.一方面,它很简单,另一方面它很强大并能产生很多特殊效果. 比如说发光效果,环境映射,阴影 ...

  6. camera主观测试经验分享.ppt33页

    http://max.book118.com/html/2016/0802/50061502.shtm http://www.docin.com/p-1408441708.html

  7. Linux 部署ftp报530 错误解决方案

    sudo apt-get remove vsftpdsudo rm /etc/pam.d/vsftpdsudo apt-get install vsftpd 这是因为ubuntu启用了PAM,所在用到 ...

  8. Axure——恢复以及备份功能从容面对意外

    1.      背景 近期刚刚接手java项目,在进行了为期一周的需求理解之后,对于最初的原型也開始做微小的调整,十一期的小伙伴们也积极地參与进来,这使得我们这个团队不断地在壮大和温馨. 眼看着原型即 ...

  9. JavaScript--百度百科

    JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标 ...

  10. struts2学习笔记(一)

    1.搭建第一个struts2 app. web.xml  <?xml version="1.0" encoding="UTF-8"?> <we ...