안드로이드 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 라이브러리 및 프로그램을 빌드할 수 있습니다.