ndk-build官方使用说明
ndk-build
脚本可用于编译采用 NDK 基于 Make 的编译系统的项目。此外,我们还针对 ndk-build
使用的 Android.mk和 Application.mk 配置提供了更具体的文档。
内部编译
运行 ndk-build
脚本相当于运行以下命令:
$GNUMAKE -f <ndk>/build/core/build-local.mk
<parameters>
$GNUMAKE
指向 GNU Make 3.81 或更高版本,<ndk>
则指向 NDK 安装目录。您可以根据这项信息从其他 shell 脚本(甚至是您自己的 Make 文件)中调用 ndk-build。
从命令行调用
ndk-build
脚本位于 NDK 安装目录顶层。要从命令行运行该脚本,请在应用项目目录或其子目录中进行调用。例如:
$ cd <project>
$ <ndk>/ndk-build
在此示例中,<project>
指向项目的根目录,<ndk>
则是您安装 NDK 的目录。
选项
ndk-build 的所有参数都将直接传递到运行 NDK 编译脚本的底层 GNU make
命令。请将 ndk-build
和表单 ndk-build <option>
中的选项结合使用。例如:
$ ndk-build clean
您可以使用以下选项:
clean
- 移除之前生成的所有二进制文件。
注意:在 Mac OS X 上,运行
ndk-build clean
时若有大量并行执行,可能会导致出现包含以下消息的编译错误:rm: fts_read: No such file or directory
要避免出现此问题,请考虑不使用
-jN
修饰符,或为N
选择较小的值(如 2)。 V=1
- 启动编译,并显示编译命令。
-B
- 强制执行完整的重新编译。
-B V=1
- 强制执行完整的重新编译,并显示编译命令。
NDK_LOG=1
- 显示内部 NDK 日志消息(用于调试 NDK 本身)。
NDK_DEBUG=1
- 强制执行可调试的编译(详见表 1)。
NDK_DEBUG=0
- 强制执行发布版编译(详见表 1)。
NDK_HOST_32BIT=1
- 始终使用 32 位模式下的工具链(详见 64 位和 32 位工具链)。
NDK_APPLICATION_MK=<file>
- 使用
NDK_APPLICATION_MK
变量指向的特定Application.mk
文件进行编译。 -C <project>
- 编译位于
<project>
的项目路径的原生代码。如果您不想在终端通过cd
切换到该路径,此选项会非常有用。
可调试版编译与发布版编译
使用 NDK_DEBUG
选项,并在特定情况下通过 AndroidManifest.xml
指定调试版或发布版编译、优化相关行为以及是否包含符号。表 1 显示了每个可能的设置组合的结果。
表 1. NDK_DEBUG
(命令行)和 android:debuggable
(清单)组合的结果。
清单设置 | NDK_DEBUG=0 | NDK_DEBUG=1 | 未指定 NDK_DEBUG |
---|---|---|---|
android:debuggable="true" | 调试;符号;已优化*1 | 调试;符号;未优化*2 | (与 NDK_DEBUG=1 相同) |
android:debuggable="false" | 发布;符号;已优化 | 发布;符号;未优化 | 发布;无符号;已优化*3 |
*1:用于分析。
*2:用于运行 ndk-gdb
的默认值。
*3:默认模式。
注意:NDK_DEBUG=0
相当于 APP_OPTIM=release
,并用 -O2
编译。NDK_DEBUG=1
相当于 Application.mk
中的 APP_OPTIM=debug
,并用 -O0
编译。要详细了解 APP_OPTIM
,请参阅 Application.mk。
例如,命令行上的语法为:
$ ndk-build NDK_DEBUG=1
64 位和 32 位工具链
某些工具链同时随附了 64 位和 32 位版本。例如,目录 <ndk>/toolchain/<name>/prebuilt/
和 <ndk>/prebuilt/
可能同时包含 linux-x86
和 linux-x86_64
文件夹,以分别用于 32 位和 64 位模式下的 Linux 工具。ndk-build 脚本会自动选择工具链的 64 位版本(如果主机操作系统支持的话)。您可以通过在自己的环境或 ndk-build 命令行中使用 NDK_HOST_32BIT=1
来强制使用 32 位工具链。
请注意,64 位工具可以更好地利用主机资源(例如,它们速度更快,并且可处理更大的程序),同时它们仍可以生成 32 位 Android 二进制文件。
要求
通常,您需要安装 GNU Make 3.81 或更高版本才能使用 ndk-build 或 NDK。编译脚本将检测不合规的 Make 工具,并生成错误消息。
如果您已安装 GNU Make 3.81,但默认的 make
命令不启动它,请在您的环境中定义 GNUMAKE
,以便在启动 ndk-build 之前指向它。例如:
$ export GNUMAKE=/usr/local/bin/gmake
$ ndk-build
您可以将 $NDK/prebuilt/<OS>/bin/
中的其他主机预编译工具替换为下列环境变量:
$ export NDK_HOST_AWK=<path-to-awk>
$ export NDK_HOST_ECHO=<path-to-echo>
$ export NDK_HOST_CMP=<path-to-cmp>
最新文章
- Linux SHELL 命令入门题目答案(一)
- 第一弹:Java 中创建对象的4种方式
- Android View各种尺寸位置相关的方法探究
- 简单几何(线段相交) POJ 1066 Treasure Hunt
- Android微信SDK API 调用教程
- [设计模式] 22 模板方法模式 template
- fuse挂载hdfs目录到linux本地
- C# 实现磁性窗体
- perl 回调必须是函数引用
- bzoj2257: [Jsoi2009]瓶子和燃料
- Windows、Unix、Linux是什么类型的操作系统?
- Java IO系列之三:NIO VS IO
- Caffe使用新版本CUDA和CuDNN
- Java继承(下)
- 【Codeforces 467D】Fedor and Essay
- HTTP参数污染【转】
- 使用GenericServlet实例
- Intro.js的简介和用法
- 02 Tensorflow的安装配置
- nuget修改配置文件
热门文章
- error: undefined reference to `vtable for
- 记一次删除ocr与dbfile的恢复记录
- 编写体面的UI测试
- 如何使用和关闭onbeforeunload 默认的浏览器弹窗事件
- Activiti6 查询由某人发起的流程请求 设置流程发起人
- 在eclipse中安装使用lombok插件
- MySQL小测试(2)
- LayUI的基本使用 - Tab选项卡切换显示对应数据
- 02-docker入门-docker常用的一些命令
- Gym - 102056C(2018EC final) -Heretical … M&#246;bius ——CRT