android mk脚本的编写
来源:互联网 发布:双十一数据图 编辑:程序博客网 时间:2024/05/24 07:21
目前网上通过JNI方式ndk编译,mk文件写法乱七八糟,没有固定的写法,让人看不懂。所以我决定看一下官网是的说明。
直入主题吧:
An Android.mk
file is written to describe your sources to the build system. More specifically:
The file is really a tiny GNU Makefile fragment that will be parsed one or more times by the build system. As such, you should try to minimize the variables you declare there and do not assume that anything is not defined during parsing.
The file syntax is designed to allow you to group your sources into 'modules'. A module is one of the following:
- A static library.
- A shared library.
- A standalone executable.
首先看一个简单例子
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY)
LOCAL_PATH := $(call my-dir)
获取当前编译对象的路径,以下用到的路径都是基于这个路径做出的动作,LoCAL_PATH是一个变量,你可以随便自己取一个名字(阿猫阿狗都行哦),$(call my-dir),这个是真正获取当前路径的方法。include $(CLEAR_VARS)
这一组是成对出现的,前者是开始,后者是结束,其他动作都是在他们之间完成的。include $(BUILD_SHARED_LIBRARY)/
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)就是初始化当前环境,在android看来就是初始化GNU环境,具体什么东东就没有去深究了,只知道他是用来初始化的就足够了。
include $(BUILD_SHARED_LIBRARY)/include $(BUILD_STATIC_LIBRARY)这个就是指定生成库的形式,是动态库还是静态库。
好了,框架就是这样,然后我们就在
include $(CLEAR_VARS)
include $(BUILD_SHARED_LIBRARY)/
include $(BUILD_STATIC_LIBRARY)
之间添砖加瓦吧。
LOCAL_MODULE := hello-jni
这个是指定输入,生成库的名称,实际上名称是前加“lib”,后加“.so”/".a",貌似有点像Linux,反正android就是从Linux来的,我们就不去深究啦,知道怎么回事就行。
LOCAL_SRC_FILES :=hello-jni.c
这个就是指定需要编译的源码,写法有很多种的,自定义文件夹加入等等,这里我不去展开,有时间我会深究一下的。
上述例子没有加上的:
LOCAL_C_INCLUDES :=$(LOCAL_PATH)/include
这个就是指定需要用到的头文件的目录,就在该目录的include文件夹下,你也可以加上很多其他路径下的头文件
LOCAL_LDLIBS := -lz
这个呢,就是连接系统一些库了,可能我们编译的时候报的一些错误,需要依赖系统的一些库的。如-lxx,就是连接某一个系统动态库。LOCAL_SHARED_LIBRARIES := hello-jni1
这个呢是链接我们自己的第三方的动态库。
LOCAL_STATIC_LIBRARIES 这个一样,是链接我们自己的第三方的静态库。
LOCAL_CFLAGS += -Dxxx这个就是你在源码定义的宏,需要定义的话就在这个参数上加上-Dxxx,前面加"-D",
后面就是宏的名称了。
好了,今天就简单的介绍了一下Android.mk文件的基本写法。有时间我会研究一下链接问题,和一些不常用的变量及其用法的。
谢谢大家,由于能力有限,希望大家多多批评指正。
- android mk脚本的编写
- Android make 文件编写mk编译脚本
- Android.mk文件的编写
- 在源码环境中编译Android studio项目时的mk脚本编写
- Android Android.mk的编写规范
- android Android.mk的编写 基本知识
- 多层目录的Android.mk的编写
- 编写 android.mk 中 LOCAL_C_INCLUDES 的技巧
- 编写 android.mk 中 LOCAL_C_INCLUDES 的技巧
- Android.mk多级目录源码的编写
- 编写 android.mk 中 LOCAL_C_INCLUDES 的技巧
- Android中各类.mk文件的编写
- 编写 android.mk 中 LOCAL_C_INCLUDES 的技巧
- Android.mk 编写
- 关于Android.mk编写
- android.mk编写要点
- Android.mk编写介绍
- Android.mk文件编写
- 记录一些易忘的属性(translucent,edgesForExtendedLayout,automaticallyAdjustsScrollViewInsets)
- Bone Collector II
- poj 1047 模拟(含大数乘法)循环数
- hdu 5294 Tricks Device (最短路+最大流)
- uvalive5798(树状数组)
- android mk脚本的编写
- VC 读写注册表
- 3.4 summary
- spring mvc中的@RequestMapping的用法
- C# UDP(Socket)异步传输文件
- 导致实例逐出的五大问题
- Lightoj 1094 - Farthest Nodes in a Tree 【树的直径裸题】
- iOS开发 -- UIButton
- Web Storage作为简单数据库存储信息