ndk-build
The script can be used to compile projects using NDK’s Make-based build system. In addition, we also provide more specific documents for the configuration of Android.mk and Application.mk used by ndk-build
.
Internal compilation
Running the ndk-build
script is equivalent to running the following command:
$GNUMAKE -f/build/core/ build-local.mk
$GNUMAKE
Point to GNU Make 3.81 or higher,
Call < from the command line /h2>
ndk-build
The script is located at the top level of the NDK installation directory. To run the script from the command line, call it in the application project directory or its subdirectories. For example:
$ cd$ /ndk-build
In this example,
points to the root directory of the project, < ndk>
is the directory where you installed the NDK.
Options
All parameters of ndk-build will be passed directly to the underlying GNU make
command that runs the NDK compilation script. Please use ndk-build
with the options in the form ndk-build
. For example:
$ ndk-build clean
You can use the following options:
-
clean
< /dt> - Remove all previously generated binary files.
Note: On Mac OS X, running
ndk-build clean
in a large number of parallel executions may cause the following messages to appear Compilation error:rm: fts_read: No such file or directory
To avoid this problem, please consider not using
-jN code> modifier, or select a smaller value (such as 2) for
N
. -
V=1
- Start the compilation and display the compilation command.
-
-B
- Force a complete recompilation.
-
-B V=1
- Force a complete recompilation and display the compilation command.
-
NDK_LOG=1
- Display internal NDK log messages (used to debug the NDK itself).
-
NDK_DEBUG=1
- Enforce debuggable compilation (see Table 1 for details).
-
NDK_DEBUG=0
- Mandatory execution of release compilation (see Table 1 for details).
-
NDK_HOST_32BIT=1
- Always use the tool chain in 32-bit mode (see 64-bit and 32-bit tool chains for details).
-
NDK_APPLICATION_MK=
- Use
NDK_APPLICATION_MK
the specificApplication.mk
file pointed to by the variable Compile. -
-C
- Compile the native code located in the project path of
. This option is very useful if you do not want to switch to this path viacd
in the terminal.
debug version compilation and release Version compilation
Use NDK_DEBUG
Option, and under specific circumstances, specify the debug version or release version to compile, optimize related behaviors, and whether to include symbols through AndroidManifest.xml
. Table 1 shows the results of each possible setting combination.
List settings | NDK_DEBUG=0 | NDK_DEBUG=1 | NDK_DEBUG is not specified |
---|---|---|---|
android:debuggable="true" | debugging; symbol; optimized*1 | debugging; symbol; not optimized*2 | (same as NDK_DEBUG=1) |
android:debuggable="false" | release; symbol; optimized | release; symbol; not optimized | release; unsigned; optimized*3 |
*1: For analysis.
*2: The default value used to run ndk-gdb
.
*3: The default mode.
Note: NDK_DEBUG=0
is equivalent to APP_OPTIM=release
, And compile with -O2
. NDK_DEBUG=1
is equivalent to APP_OPTIM=debug
in Application.mk
, and compiled with -O0
. To learn more about APP_OPTIM
, please refer to Application.mk.
For example, the syntax on the command line is:
$ ndk-build NDK_DEBUG=1
64-bit and 32-bit toolchain
Some toolchains come with both 64-bit and 32-bit versions. For example, the directories
and
may contain both linux-x86
and linux-x86_64
folder for Linux tools in 32-bit and 64-bit modes respectively. The ndk-build script will automatically select the 64-bit version of the toolchain (if supported by the host operating system). You can force the use of a 32-bit toolchain by using NDK_HOST_32BIT=1
in your own environment or on the ndk-build command line.
Please note that 64-bit tools can make better use of host resources (for example, they are faster and can handle larger programs), while they can still generate 32-bit Android binaries.
Requires
Usually, you need to install GNU Make 3.81 or higher to use ndk-build or NDK. The compilation script will detect non-compliant Make tools and generate an error message.
If you have installed GNU Make 3.81, but the default make
command does not start it, please define GNUMAKE
in your environment so that you can start ndk-build pointed to it before. For example:
$ export GNUMAKE=/usr/local/bin/gmake $ ndk-build
You can add other hosts in $NDK/prebuilt/
The pre-compilation tool is replaced with the following environment variables:
$ export NDK_HOST_AWK=$ export NDK_HOST_ECHO= $ export NDK_HOST_CMP=
List settings | NDK_DEBUG=0 | NDK_DEBUG=1 | NDK_DEBUG is not specified |
---|---|---|---|
android:debuggable ="true" | Debug; symbol; optimized*1 | Debug; symbol; not optimized*2 | (same as NDK_DEBUG=1) |
android:debuggable="false" | release; symbol; optimized | release; symbol; not optimized |
p>