Windows Android NDK Compile -----android-ndk-r6b

本文详细介绍了如何在Cygwin环境下快速安装并配置NDK,包括NDK和Cygwin的安装步骤,以及如何编译NDK程序。通过简单的几步操作,您可以在Cygwin中轻松构建和运行NDK项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  NDK 下载地址 : http://developer.android.com/sdk/ndk/index.html

  Cygwin 下载地址 :http://www.cygwin.com

 

1 Cygwin 安装

   Cygwin安装就很简单啦,直接下一步就行。唯一需要注意的就是,因为我们在cygwin中编译ndk的时候需要make和gcc,所以我们在Select Packages 这一步的时候要选择Devel 选项为Install(默认为不安装的,Defatult状态)。顺便也要把vim所在的包选择为isntall,因为后续我们在cygwin中需要编辑文件。vim所对应的包名字呀? 不记得了,直接在查找里面输入vim就能看到对应的package名字了。

 

2 NDK 安装

   更简单了,只需要将下载的文件解压缩到任意目录就可以了。

 

3     编译NDK程序

       这里先介绍下Application.mk不在应用程序目录下的jni里,而是在其它目录下的jni里,这里具体目录就是在$NDK_ROOT/jni/下。通过Application.mk中的APP_BUILD_SCRIPT可以指定任意的应用程序里的Android.mk的特性来实现的。当然Application.mk也可以和Android.mk一起放在应用程序$Program/jni目录下,这种情况的编译请参见我的另一篇文章。

 

       1> 先配置ndk相关环境

        进入到cygwin的/home/username目录,username是你当前登录机器的用户名,修改该目录下的.bash_profile,在文件的尾部加入如下代码,设置ndk安装的根目录。

         NDK_ROOT=/cygdrive/d/workdoc_tool/android_env_build/windows/android-ndk-r6b    
         export NDK_ROOT

         NDK_PROJECT_PATH=/cygdrive/d/workdoc_tool/android_env_build/windows/android-ndk-r6b   
         export NDK_PROJECT_PATH      

         环境变量名NDK_ROOT为NDK安装包根目录,名字可以随便取,只是用于切换目录时方便而已。 

         环境变量NDK_PROJECT_PATH名字不能更改,因为如果定义了此环境变量后,编译器会根据此变量去找此目录下的jni下的Application.mk. 

         然后重新启动Cygwin。

 

      2> cd $NDK_ROOT, 在ndk安装目录下mkdir jni 目录。

 

      3>cd $NDK_ROOT/build/core,将该目录下的default-application.mk 拷贝到2>中jni目录下,并且重新命名为Application.mk。

 

      4> 修改Application.mk中变量内容,指定需要编译的project路径,并且指定project path下对应的build 的make file脚本。这里编译ndk自带的samples下的hello-jni工程。

            # Project Path
           APP_PROJECT_PATH := $(NDK_PROJECT_PATH)/samples/hello-jni  

           # We expect the build script to be located here
           APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/jni/Android.mk        

          变量APP_PROJECT_PATH是可选的,不过这里最好是指定下,看起来清晰些.

          变量APP_BUILD_SCRIPT是必须的

     5> $(APP_PROJECT_PATH)/jni/Android.mk 内容如下:     

           LOCAL_PATH := $(call my-dir)

           include $(CLEAR_VARS)

           LOCAL_MODULE    := hello-jni
           LOCAL_SRC_FILES := hello-jni.c

           include $(BUILD_SHARED_LIBRARY)

     6> cd $NDK_ROOT,执行./ndk-build.

           因为指定了NDK_PROJECT_PATH环境变量,所以在$NDK_ROOT根目录下执行./ndk-build或是在$APP_PROJECT_PATH下执行$NDK_ROOT/ndk-build来编译$APP_PROJECT_PATH程序都可以。编译器都会先根据NDK_PROJECT_PATH环境变量去找jni/Application.mk,然后根据其中的APP_BUILD_SCRIPT来执行对应的Android.mk.

        

          这样就可以编译Application.mk中指定的native project了,在samples/hello-jni/libs/armeabi/下生成动态库libhello-jni.so了。

 

        呵呵, 大功告成了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值