Open Source library를 android에서 사용하기 위해 NDK로 빌드를 해야 할 필요가 생겼다.
그 옛날(?) Gingerbread 일 때는, NDK에서 STL을 지원하지 않아서 stlport를 직접 빌드해서 넣거나, NDK에 stlport를 추가 해 놓은 NDK 버전을 사용해야 했었는데, 지금은 정말 편 해 졌더라.
MS Windows + NDK 환경에서 STL을 이용하고하 할 경우 아래와 같이 하면 간단히 해결된다. (정말 초 간단 함-0-)
- 우선 NDK를 다운로드 받아서 적당한 위치에 압축을 풀어준다.
설치과정은 필요 없으며, 현재 최신 버전은 Android NDK, Revision 10e (May 2015) 이다. - 소스 디렉토리를 구성한다.
빌드 하고자 하는 소스는 jni 디렉토리 아래에 위치 해야 하며, 해당 디렉토리에 Android.mk / Application.mk 파일도 위치 해 있어야 한다. (ex. prj_root/jni/Android.mk, prj_root/jni/Application.mk 등) - Android.mk 파일은 다른 Android.mk 파일을 참고하되, stl을 사용하기 위해서 추가해야 하는 내용은 없다.
- (여기가 중요!) Application.mk 파일이 중요한데, 여기에 다음과 같은 한 줄을 추가하면 C++11 STL이 shared library로 포함된다.
APP_STL := stlport_static
APP_STL := gnustl_shared
APP_CPPFLAGS += -std=c++11 - 위 한 줄이면, include나 link path를 추가할 필요가 없다!!!
단, 본인의 모듈에만 적용하고 싶다면, Android.mk 파일에
LOCAL_CPPFLAGS += -std=c++11 - 여기에 추가로, tool chain을 선택할 수 있다. (gcc / clang)
Application.mk 파일에 아래와 같이 추가해 주면 된다.
NDK_TOOLCHAIN_VERSION := 4.8
또는
NDK_TOOLCHAIN_VERSION := clang - 빌드는 (위의 예에서) prj_root 디렉토리에서, (NDK PATH)\ndk-build.cmd 를 실행하면 된다.
NDK_TOOLCHAIN_VERSION := clang
APP_STL := gnustl_shared
APP_CPPFLAGS += -std=c++11
이렇게 하면, 간단히 STL을 이용할 수 있다.
GB 시절(?)에 stl 사용하려고 삽질 했던걸 생각하면, 정말 껌이 되었구나!!! (__)
'리눅스 & 안드로이드' 카테고리의 다른 글
Nokia Tune on arduino (0) | 2014.05.15 |
---|---|
First arduino in my life (0) | 2014.05.13 |
vim에서 ^M 제거 (0) | 2014.03.05 |
smp_rmb() 가 뭐하는 놈이냐? (0) | 2014.01.22 |
DOS(cmd.exe)에서 adb를 이용해 주기적으로 특정 명령어 수행 (0) | 2014.01.06 |