zoukankan      html  css  js  c++  java
  • 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=0NDK_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>
        
  • 相关阅读:
    ArcGis Desktop arcmap安装步骤
    ArcMap 中添加 ArcGis server
    arcgis server 安装
    哨兵数据处理,哨兵数据水体数据提取
    Web安全之SQL注入攻击技巧与防范(转)
    干货分享丨Python从入门到编写POC之初识OOP和类
    干货分享丨Python从入门到编写POC之爬虫专题
    干货分享丨XSS利用进阶
    CVE-2020-9484 Apache Tomcat反序列化漏洞浅析
    干货分享丨Python从入门到编写POC之常用的标准库
  • 原文地址:https://www.cnblogs.com/gamesky/p/11369142.html
Copyright © 2011-2022 走看看