Tools/NDK
[NDK BUILD] ndk-build시 C++11 사용하기
어발
2022. 3. 25. 15:25
문제 상황
- 프로젝트를 하다가 vector 요소에 접근하기 위해서 function call을 하던 중에 data()가 없다는 빌드 에러가 발생 했다.
vector Reference 찾아보기
- 뭐지? 하는 생각에 vector의 Reference를 찾아보았다. C++ vector Reference
- 아래 그림처럼 data옆에는 조그만하게 C++11 이라고 붙어있는데, 이뜻은 C++11 only라는 뜻으로 C++11 버전에서만 지원하는 API란 뜻이었다.
C++11로 NDK 빌드하기
32bit로 빌드할거라서, 아래 처럼 Application.mk로 구성하고 내가 빌드할 모듈의 로컬 Cpp flag로 -std=c++11로 지정하였다.
# Android.mk LOCAL_CPPFLAGS += -std=c++11 # Application.mk APP_ABI := armeabi-v7a APP_STL := stlport_static
BUT!!! 이렇게 해도 똑같은 에러로 빌드가 안됬다.
ndk-build-B V=1 를 통해 빌드커맨드를 확인했을때도 알맞게 -std=c++11로 설정되었음에도 빌드가 되지 않았다. (-B 는 clean build옵션, V=1은 빌드로그보는 옵션)
C++11로 NDK 빌드하기 해결!
- 찾아보니 Application.mk에 APP_STL을 gnustl_shared 로 바꾸면 C++11 STL을 사용할 수 있다고 하여 변경후에 빌드 성공!
# Appcliation.mk APP_STL := gnustl_shared
728x90