안드로이드 sdk 버전이 계속 오르고 있는 만큼, ndk 도 계속 바뀌고 있는 것 같습니다.

 

사용법이 조금씩 바뀌는 경우가 많은데, ndk toolchain 을 편하게 사용하는 방법을 소개하겠습니다.

 

ndk 개발 방법에는 몇가지가 있는데 그 중 가장 익하게 사용할 수 있는 방법이

 

크로스 컴파일러만 뽑아내서 make file 을 만들어 so 형태의 라이브러리로 빌드하는 것이 아닐까 싶습니다.

 

이런 유저들을 위해 ndk 에서 script 를 제공합니다.

 

{NDK_DIR}/build/tools/make-standalone-toolchain.sh

 

실행하기 위해서서 붙여줘야할 옵션들이 좀 많아서 불편하기는 하더군요.

 

$ ./make-standalone-toolchain.sh --help


Usage: make-standalone-toolchain.sh [options]

Generate a customized Android toolchain installation that includes
a working sysroot. The result is something that can more easily be
used as a standalone cross-compiler, e.g. to run configure and
make scripts.

Valid options (defaults are in brackets):

  --help                   Print this help.
  --verbose                Enable verbose mode.
  --toolchain=<name>       Specify toolchain name
  --arch=<name>            Specify target architecture [arm]
  --ndk-dir=<path>         Take source files from NDK at <path> [.]
  --system=<name>          Specify host system [linux-x86]
  --package-dir=<path>     Place package file in <path> [/tmp/ndk-woong]
  --install-dir=<path>     Don't create package, install files to <path> instead.
  --platform=<name>        Specify target Android platform/API level. [android-3]

 

예를 들면 이런 식으로 사용합니다.

 

$ ./make-standalone-toolchain.sh --arch=arm --ndk-dir=../../ --system=linux-x86 --install-dir=/home/woong/tmp/ --platform=android-9


Auto-config: --toolchain=arm-linux-androideabi-4.6
Copying prebuilt binaries...
Copying sysroot headers and libraries...
Copying libstdc++ headers and libraries...
Copying files to: /home/woong/tmp/
Cleaning up...
Done.

 

실행하고 나면 install-dir 에 toolchain 파일들이 생성되어 있습니다.

 

$ ls /home/woong/tmp/
COPYING  COPYING.LIB  SOURCES  arm-linux-androideabi  bin  include  lib  lib32  libexec  sysroot

 

이제 기존의 linux 개발 방식과 동일하게 toolchain 을 사용해서 android 라이브러리 및 프로그램을 빌드할 수 있습니다.