博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

NDK makefile 文件分析

Posted on 2010-08-24 14:27  zhangweia  阅读(3451)  评论(0编辑  收藏  举报

通过分析一个例子来了解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