大家好,又见面了,我是全栈君。
ndk-build介绍:
ndk-build文件是Android NDK r4中引入的一个shell脚本。其用途是调用正确的NDK构建脚本。
内部构建:
运行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:移除以前生成的任意二进制文件;
V=1:启动构建,并显示构建命令;
-B:强制执行完全的重新构建;
-B V=1:强制执行完全的重新构建,并显示构建命令。
NDK_LOG=1:显示内部NDK日志消息(用于调试NDK本身)。
NDK_DEBUG=1:强制执行可调试版构建;
NDK_DEBUG=0:强制执行发布版构建;
NDK_HOST_32BIT=1:始终使用32位模式下的工具链;
NDK_APPLICATION_MK=<file>:使用NDK_APPLICATION_MK变量指向的特定Application.mk文件构建。
-C <project>:构建位于<project>的项目路径的原生代码。如果您不想在终端通过cd切换到该路径,则此选项非常有用。
可调试版与发布版构建:
使用NDK_DEBUG选项,在特定情况下,通过AndroidManifest.xml指定调试版或发布版构建、与优化相关的行为以及是否包含符号。表1显示每个可能的设置组合的结果。
表1、NDK_DEBUG(命令行)的结果和android:debuggable(清单)组合。
*1:用于分析
*2:用于运行ndk-gdb的默认值。
*3:默认模式。
注:NDK_DEBUG=0等同于APP_OPTIM=release,并符合GCC -O2选项。NDK_DEBUG=1等同于Application.mk中的APP_OPTIM=debug,并符合GCC -O0选项。如需了解有关APP_OPTIM的详细信息,请参阅Application.mk。
例如,命令行上的语法为:
$ ndk-build NDK_DEBUG=1
如果您使用SDK r8以前版本的构建工具,您还必须修改您的 AndroidManifest.xml文件以指定调试模式。执行此操作的语法类似于如下:
<application android:label=”@string/app_name”
android:debuggable=”true”>
从SDK r8开始,您不需要使用AndroidManifest.xml构建调试软件包(例如,使用ant调试或对应的ADT插件选项)可使工具自动选取通过NDK_DEBUG=1生成的原生调试文件。
64位和32位工具链:
某些工具链附带64位和32位版本。例如,目录 <ndk>/toolchain/<name>/prebuilt/和<ndk>/prebuilt/可能同时包含分别用于32位和 64位模式中的Linux工具的linux-x86和linux-x86_64文件夹。ndk-build脚本自动选择工具链的64位版本(如果主机操作系统支持)。您可以通过在您的环境中或ndk-build命令行中使用NDK_HOST_32BIT=1来强制使用32位工具链。
请注意,64位工具可以更好地利用主机资源(例如,它们速度更快,并且可处理更大的程序),同时它们仍可以为Android生成32位二进制文件。
要求:
一般情况下,您需要安装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>
转载于:https://my.oschina.net/cht2000/blog/899004
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108499.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...