Android中的Android.mk文件解析
来源:互联网 发布:皇甫圣华的淘宝店 编辑:程序博客网 时间:2024/06/16 11:52
1、背景介绍
在Android JNI开发过程中,会遇到一个文件名为Android.mk的文件,这个文件包含了一些全局的信息,路径呀,编译环境呀等等信息。如果没有这个文件,或者该文件中的配置信息不正确,编译程序是无法通过的,下面我们来介绍一下这其中的实际含义。
2、文件目录
首先我们看一下该文件在Android整体开发环境中的目录位置,这里给出一副图示说明:
3、配置文件
这里给出笔者在搭建开发环境时候的配置文件信息,如下:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := uninstallLOCAL_SRC_FILES := uninstall.cLOCAL_C_INCLUDES:= $(LOCAL_PATH)/includeLOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -lloginclude $(BUILD_SHARED_LIBRARY)
截图如下所示:
4、解释说明
我们接下来对该文件中的每一行的意思逐步解析说明一下:
LOCAL_PATH := $(call my-dir)
LOCAL_PATH定义了本地源码的路径,它是Android.mk文件中必须要定义的变量,call my-dir指定调用了my-dir宏,它是由编译系统提供的,返回Android.mk文件本身所在的路径,一般与源文件目录相同。
include $(CLEAR_VARS)
CLEAR_VARS指定让编译系统清除掉一些已经定义过的宏,这些宏的定义都是全局的。
当一个GUN MAKE在编译多个模块的时候,必须清除并重新设置他们。
LOCAL_MODULE := uninstall
LOCAL_MODULE指定了模块的名称,即原生程序生成后的文件名。这里最终生成名为uninstall的文件
LOCAL_SRC_FILES := uninstall.c
LOCAL_SRC_FILES这里指定了C/C++源文件列表,这里只有一个uninstall.c文件
LOCAL_C_INCLUDES:= $(LOCAL_PATH)/include
LOCAL_C_INCLUDES: 可选变量,表示头文件的搜索路径。默认的头文件的搜索路径是LOCAL_PATH目录。
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
编译模块时要使用的附加的链接器选项。这对于使用‘-l’前缀传递指定库的名字是有用的。
例如,LOCAL_LDLIBS := -lz表示告诉链接器生成的模块要在加载时刻链接到/system/lib/libz.so
include $(BUILD_SHARED_LIBRARY)
这里表示生成的文件类型。
BUILD_SHARED_LIBRARY表示生成动态库文件
BUILD_EXECUTABLE表示生成可执行文件
BUILD_STATIC_LIBRARY表示生成静态库
5、文件列表编写
关于文件列表编写的具体情况,如何使用,我们可以参照如下地址:http://blog.ready4go.com/blog/2013/05/20/write-local-src-files-in-android-dot-mk-ultimate-skills/
6、自定义变量
以下是在 Android.mk中依赖或定义的变量列表,可以定义其他变量为自己使用,但是NDK编译系统保留下列变量名:
-以 LOCAL_开头的名字(例如 LOCAL_MODULE)
-以 PRIVATE_, NDK_ 或 APP_开头的名字(内部使用)
-小写名字(内部使用,例如‘my-dir’)
如果为了方便在 Android.mk 中定义自己的变量,建议使用 MY_前缀,一个小例子:
MY_SOURCES := foo.c
ifneq ($(MY_CONFIG_BAR),)
MY_SOURCES += bar.c
endif
LOCAL_SRC_FILES += $(MY_SOURCES)
注意:‘:=’是赋值的意思;'+='是追加的意思;‘$’表示引用某变量的值。
- Android中的Android.mk文件解析
- android.mk 文件解析
- Android.mk文件解析
- 解析Android.mk文件
- Android.mk文件解析
- android.mk文件解析
- Android.mk文件解析
- Android Android.mk文件解析
- Android Android.mk文件解析
- Android.mk文件解析(一)
- Android.mk文件解析(二)
- Android.mk文件的解析
- Android .mk文件语法解析
- Android .mk文件语法解析
- Android.mk编译文件解析
- Android .mk文件语法解析
- Android .mk文件语法解析
- Android .mk文件语法解析
- Combinations
- c++析构函数作用域
- 反渗透设备:反渗透海水淡化装置的介绍以及技术说明
- string cstring string.h的区别
- 反渗透设备:反渗透纯水设备中软水器的作用及维护方法
- Android中的Android.mk文件解析
- Json解析
- java socket 实现服务端与客户端------一对多的服务端和客户机
- Sum root to leaf numbers
- 单独数问题
- iOS开发里的Bundle是什么
- zoj 1558 - Euro Efficiency
- 2.oracle的安装常识,Oralce服务器,oracle集群,oracle服务介绍,用户解锁相关
- What is the copy-and-swap idiom?