欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android开发实践之ndk编译命令简单示例

程序员文章站 2022-10-10 11:50:35
前言 android提供了ndk工具,用来编译native代码(c/c++),该工具配置好了相关的交叉编译环境和工具链,只需要你简单地编写几个.mk文件即可将你的c/c+...

前言

android提供了ndk工具,用来编译native代码(c/c++),该工具配置好了相关的交叉编译环境和工具链,只需要你简单地编写几个.mk文件即可将你的c/c++代码编译为android的java工程/android手机可以识别、加载和运行的库或者应用程序。

默认情况下,使用ndk编译c/c++代码,需要将该代码放置到任一个android应用工程的jni目录下,然后编写相应的android.mk文件,并执行ndk-build命令完成编译。其实你也是可以在任意目录下去编译native代码的,只需要在ndk-build命令后面添加相应的命令行参数即可,这里给出一些常用的ndk-build命令行参数,方便大家灵活地使用ndk编译自己的native代码,具体的示例我将会在后续的文章中给出。

ndk-build命令行参数

1、ndk-build ndk_log=1

用于配置log级别,打印ndk编译时的详细输出信息

2、ndk-build ndk_project_path=.

指定ndk编译的代码路径为当前目录,如果不配置,则必须把工程代码放到android工程的jni目录下

3、ndk-build app_build_script=./android.mk

指定ndk编译使用的android.mk文件

4、ndk-build ndk_application_mk=./application.mk

指定ndk编译使用的application.mk文件

5、ndk-build clean

清除所有编译出来的临时文件和目标文件

6、ndk-build -b

强制重新编译已经编译完成的代码

7、ndk-build ndk_debug=1

执行 debug build

8、ndk-build ndk_debug=0

执行 release build

9、ndk-build ndk_out=./mydir

指定编译生成的文件的存放位置

10、ndk-build -c /opt/mytest/

到指定目录编译native代码

例:

编写 .c 文件

假设你在 ~/math 目录下编写了一个 math.c 文件,内容如下:

#include <stdio.h>
int add( int a , int b ) {
return a+b;
}

编写 android.mk 文件,内容如下:

local_path := $(call my-dir)
include $(clear_vars)
local_module := dmath
local_src_files := math.c
include $(build_shared_library)

在 ~/math 目录下,执行 ndk-build 命令,参数如下:

$ ndk-build ndk_project_path=. app_build_script=./android.mk

或:

ndk-build ndk_project_path=. app_build_script=./android.mk ndk_application_mk=./application.mk

ndk_project_path 指定了需要编译的代码的工程目录,这里给出的是当前目录,app_build_script给出的是android makefile文件的路径,当然,如果你还有 application.mk 文件的话,则可以添加ndk_app_application_mk=./application.mk

执行完ndk-build命令后,你会发现当前目录下,生成了 obj 和 libs 文件夹,这样,你的libdmath.so动态库就已经制作完成了,在 libs/armeabi 目录下。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。