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>
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM