NDK mk 文件分析

news/2024/7/4 13:37:49

通过分析一个例子来了解NDK makefile文件的生成。例子"hello JNI" ,由NDK提供的例子

A. 目录结构

    未命名

     jni目录:包含本地源文件,eg:'jni/hello-jni.c',该源文件实现了一个简单的共享库,实现了一个简单的本地方法,返回字符串给java 虚拟机

     src目录:包含了工程的java源文件

B. mk源文件

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)

        必须的,调用系统方法,返回当前程序的目录

      第二行:

           include $(CLEAR_VARS)

      必须得,该CLEAR_VARS变量由编译系统提供,指向一些特殊的GNU Makefile文件来清除一些LOCAL_XXX变量除了

LOCAL_PATH。因为所有的编译控制文件被一个单一的GUN Make执行时所有的变量时全局的。

      第三行:

          LOCAL_MODULE := hello-jni

 用来指定你生成的动态库的名字,系统会自动为你添加前缀和后缀,生成后的so为 libhello-jni.so,系统自动添加了前缀“lib”和后缀“.so”

      第四行:

         LOCAL_SRC_FILES := hello-jni.c  

       其包含一系列的C or C++源文件,不需要添加.h文件,系统会自动为你添加

      第五行:

          include $(BUILD_SHARED_LIBRARY)

 必须的,其由系统提供,指向一个GUN Makefile脚本,用来负责收集你定义的所有LOCAL_XXX变量,并确定该怎么构建,以及怎样做准确,同时也指定生成一个共享库

第二部分:参考资料

mk overview


http://www.niftyadmin.cn/n/4121156.html

相关文章

哈佛告诉你

陈祖芬 哈佛某教授对学生说,你学我这门课,你就一天只能睡两小时。学生想,那么,我学四门课,我就没有睡眠时间了,我就得倒贴睡眠时间了。 于是—— 哈佛产的诺贝尔奖得主有33位。 哈佛产的美国总统有7位。…

中国武侠片经典剧情(^.^)

为什么80%的码农都做不了架构师?>>> 从小到大,可以说,我是一直看着中国武侠片长大的,中国武侠,确实有着自己的风格和传统,在世界影坛也有一定的地位,甚至有的国外朋友曾经问过我说&…

Activity LifeCycle 生命周期

1. Android中Activity的调用机制 据我的了解,Android中Activity跳转的实现,主要是通过栈的先进后出的原理设计的。当新建一个Activit的时候,把它压入栈,然后按返回键的时候,就出栈。android设置了容纳Activity栈的大小…

关于LUN、PV、VG和LV

1.划分LUN LUN只是一个逻辑的东西。在存储设备内部,LUN与物理硬盘的关系,如同主机中逻辑卷与物理硬盘的关系,也就是好像LV和PV的关系,在不同范畴。可以理解为LUN就是在做完RAID之后的逻辑盘上分出来的logic driver。 但不同的是&a…

重构:第一个案例

在写重构的学习笔记之前,首先我们需要向伟大的软件设计师Martin Fowler致敬,是他带给了我们重构的思想,敏捷的思想。 重构--改善既有代码的设计。意味着对现有运行中的代码进行新的修改、设计。这对很多项目经理来说是不可思议的,…

敏捷开发 慨叙

在开始写敏捷开发系列博客时,首先感谢伟大的软件设计师Martin Fower以及其他几位敏捷思想的创建人,是他们带给了我们新的编程思想,解决了毕业几年来一直困恼我的很多问题。 软件开发是一种对人类智慧的管理,对人大脑思维的“工厂化…

An ATL Sample using VS2005

An ATL Sample using VS2005<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1. Create an ATL COM1). Start VS2005, new a project, select “Visual C”->”ATL”->”ATL Project”, specify the name(“SimonAT…

敏捷开发 迭代流程

敏捷是一柄双刃剑&#xff0c;用的好能极大的提升开发效率&#xff0c;适应需求的变化&#xff01;用的不好则会导致项目的混乱。现在很多公司都说自己在用敏捷开发&#xff0c;很多程序员也说自己懂敏捷开发&#xff01;简单的认为敏捷就是站立会议&#xff0c;就是迭代的开发…