zoukankan      html  css  js  c++  java
  • Android NDK入坑之旅(四):脚本文件ndk-build初识

    ndk-build 文件是 Android NDK r4 中引入的一个 shell 脚本。

    其用途是调用正确的 NDK 构建脚本。

    1.内部构建

    运行 ndk-build 脚本相当于运行以下命令:

    $GNUMAKE -f <ndk>/build/core/build-local.mk
    <parameters>

    $GNUMAKE 指向 GNU Make 3.81 或更新版本,<ndk> 指向 NDK 安装目录。 您可以使用此信息从其他 shell 脚本甚至您自己的 Make 文件调用 ndk-build。

    2.从命令行调用

    ndk-build 文件位于 NDK 安装目录的顶层。若要从命令行运行该文件,请在应用项目目录中或其子目录中调用它。例如:

    cd <project>
    $ <ndk>/ndk-build

    在此示例中,<project> 指向项目的根目录,<ndk> 是您安装 NDK 的目录。


    3.选项

    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
      强制执行可调试版构建(请参阅表 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 切换到该路径,则此选项非常有用。

    4.可调试版与发布版构建

    使用 NDK_DEBUG 选项,在特定情况下,通过 AndroidManifest.xml 指定调试版或发布版构建、与优化相关的行为以及是否包含符号。 表 1 显示每个可能的设置组合的结果。

    表 1. NDK_DEBUG(命令行)的结果和 android:debuggable(清单)组合。

      NDK_DEBUG=0 NDK_DEBUG=1 未指定 NDK_DEBUG
    android:debuggble="true"  调试;符号;已优化*1 调试;符号;未优化*2 (与 NDK_DEBUG=1 相同)
    android:debuggable="false" 版本;符号;已优化 版本;符号;未优化 版本;无符号;已优化*3


    *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 生成的原生调试文件。

    5.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 位二进制文件。

    6.要求

    一般情况下,您需要安装 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>

     

     

     

    但行好事,莫问前程;你若盛开,蝴蝶自来;你若坚强,命运自会给你打赏。
  • 相关阅读:
    VS快速格式化代码
    EasyUI——实现展示后台数据代码
    并行开发
    EF---结合三层方法的应用
    EF—主键冲突解决办法
    SVN——配置和安装
    谈谈MVC模式
    JDK/Java里的设计模式
    设计模式的设计原则和精神
    举例说明你使用的设计模式
  • 原文地址:https://www.cnblogs.com/songjie-xuan/p/7418625.html
Copyright © 2011-2022 走看看