ndk-build官方使用說明

ndk-build 腳本可用於編譯採用 NDK 基於 Make 的編譯系統的項目。此外,咱們還針對 ndk-build 使用的 Android.mk和 Application.mk 配置提供了更具體的文檔。html

內部編譯

運行 ndk-build 腳本至關於運行如下命令:node

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

$GNUMAKE 指向 GNU Make 3.81 或更高版本,<ndk> 則指向 NDK 安裝目錄。您能夠根據這項信息從其餘 shell 腳本(甚至是您本身的 Make 文件)中調用 ndk-build。linux

從命令行調用

ndk-build 腳本位於 NDK 安裝目錄頂層。要從命令行運行該腳本,請在應用項目目錄或其子目錄中進行調用。例如:android

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

在此示例中,<project> 指向項目的根目錄,<ndk> 則是您安裝 NDK 的目錄。shell

 

選項

ndk-build 的全部參數都將直接傳遞到運行 NDK 編譯腳本的底層 GNU make 命令。請將 ndk-build 和表單 ndk-build <option> 中的選項結合使用。例如:app

    $ ndk-build clean
    
 

您可使用如下選項:ide

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 顯示了每一個可能的設置組合的結果。ui

表 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>
    
相關文章
相關標籤/搜索