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. javascript 定时器 笔记

    最近想看下定时器,发现这东西越看越牵连的东西越多,比如js单线程,EVent loop 什么的 看到了几篇比较好的文章 http://ejohn.org/blog/how-javascript-tim ...

  2. php简单常用的API

    1.var_dump($x),查看数据类型,以及数据 var_dump($x); //string(12) "就是就是" 2.memory_get_usage()到当前这一步为止一 ...

  3. Coherence装载数据的研究 - Invocation Service

    这里验证第三个方法,原理是将需要装载的数据分载在所有的存储节点上,不同的地方是利用了存储节点提供的InvocationService进行装载,而不是PreloadRequest, 原理如图 前提条件是 ...

  4. iOS:二维码的扫描

    iOS 中二维码的扫描借用#import <AVFoundation/AVFoundation.h> 实现,会用到<AVCaptureMetadataOutputObjectsDel ...

  5. 第五章:关于ESearch的应用

    ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例. 我在这里做一下简单介绍和整理: 首先.ES搜索引擎给予java开放使用之前必须安装java环境,使用j ...

  6. Python3环境安装PySpider爬虫框架过程

    收录待用,修改转载已取得腾讯云授权 大家好,本篇文章为大家讲解腾讯云主机上PySpider爬虫框架的安装. 首先,在此附上项目的地址,以及官方文档 PySpider 官方文档 安装流程 pip 首先确 ...

  7. Python下opencv使用笔记(二)(简单几何图像绘制)

    简单几何图像一般包含点.直线.矩阵.圆.椭圆.多边形等等.首先认识一下opencv对像素点的定义. 图像的一个像素点有1或者3个值.对灰度图像有一个灰度值,对彩色图像有3个值组成一个像素值.他们表现出 ...

  8. linux 局域网内文件传送

    Linux scp命令用于Linux之间复制文件和目录,具体如何使用这里好好介绍一下,从本地复制到远程.从远程复制到本地是两种使用方式.这里有具体举例: ================== Linu ...

  9. 右键添加在siblime中打开选项

    siblime text安装完成之后没有右键打开的快捷方式,对于开发者来说每次用siblime打开文件比较繁琐. 下面教程可以让大家解决这个问题 首先点击开始--运行,输入regedit,(win7系 ...

  10. Cocos2dx 3.6源代码编译错误:syntax error : missing &#39;)&#39; before &#39;{&#39;

    在编译Cocos2dx 3.6版本号时.发现编译错误: 定位代码行: debugForNormalSprite->drawPoints(positions, 4, 8, Color4F{0.0, ...