내 공유 객체를 빌드하는 데 최신 Android NDK r6b를 사용하고 있습니다. 이 라이브러리는 어떤 종류의 STL도 사용하지 않지만 결과적으로 .so는 std :: bad_alloc_what (void)와 같은 많은 STL 항목을 포함하며 바이너리 크기를 크게 늘립니다. 또한 릴리스 빌드에는이 가비지가 포함됩니다. APP_STL은 어디에도 정의되어 있지 않으며 NDK r5b는 사용 된 함수로만 작은 바이너리를 생성합니다. 그것은 r6b의 버그입니까? STL을 사용하지 않고 r6b로 어떻게 구축 할 수 있습니까?STL없이 Android NDK .so를 작성하는 방법은 무엇입니까?
답변
-fno-exceptions
이 명시 적으로 지정되어 있어도 NDK r6b에 버그가있는 것으로 보이며 항상 예외 지원이 설정된 라이브러리를 빌드합니다. 그것은 버그가 아니라 Android NDK produce unreasonable big binaries, how to optimize .so size?
네 말이 맞아. "오래된"r5 NDK를 계속 사용해야합니다. Спасибо. – trashkalmar
new
을 사용하는 경우 std::bad_alloc
예외에 대해 암시 적으로 표준 라이브러리를 사용하고 있습니다. new
의 no-throw 버전을 호출하지 않는 한 std::nothrow
을 대신 사용합니다. 표준 라이브러리를 사용하지 않으면 링크되지 않습니다. 그게 네가 원한다면 네가하지 않았는지, 아니면 그냥 C로 옮기 겠어?
I 제가 말했듯이, r5b는 STL을 참조하지 않고 라이브러리를 빌드하기 때문에 어디서나 STL을 사용하지 않습니다. – trashkalmar
@trashkalmar : 따라서 코드 전체에서 직접 또는 간접적으로'new'를 사용하지 않습니까? 어떤 경우에 r6b가 빌드되어 예외가 활성화되고 r5b가 활성화되지 않았습니까? –
물론, 나는'new'를 여러 번 사용하고 있습니다. r6b가 예외를 켰는 지 어떻게 알 수 있습니까? 그리고 그들을 명시 적으로 비활성화하는 방법은 무엇입니까? 내가 아는 한 Android 런타임은 C++ 코드에서 예외를 지원하지 않습니다. – trashkalmar
- 1. ndk 응용 프로그램을 작성하는 방법은 무엇입니까?
- 2. Android NDK 및 .m4
- 3. android ndk practices
- 4. ndk (linux) 설치 방법은 무엇입니까?
- 5. Android NDK GLES v1.1
- 6. Android NDK 라이브러리 공유
- 7. Android NDK 게임 엔진
- 8. Android NDK 증분 빌드
- 9. Android NDK 사용
- 10. Android NDK 시설
- 11. Android NDK 파일 쓰기
- 12. libutils for android ndk
- 13. Android NDK 및 ALSA
- 14. Android NDK 스레드가 프로그램을 중단합니다.
- 15. android - 스트레칭하는 복잡한보기를 작성하는 방법은 무엇입니까?
- 16. Android 용 드라이버를 작성하는 방법은 무엇입니까?
- 17. Android NDK 프로젝트에서 미리 컴파일 된 헤더를 사용하는 방법은 무엇입니까?
- 18. android-ndk 코드 컴파일 문제
- 19. mupdf 라이브러리를 사용하는 android ndk
- 20. android ndk mupdf 빌드 오류
- 21. 유니 코드 및 Android NDK
- 22. Android NDK hellojni 예제가 실패합니다.
- 23. Android NDK C#ifndef 문제
- 24. Android NDK - connect() 블록 시스템
- 25. Android NDK 문제 pthread_mutex_unlock 문제
- 26. Android NDK 및 사용자 인터페이스
- 27. Android NDK 신청서 사전 설치
- 28. Android 용 라이브러리 컴파일 NDK
- 29. Android-ndk - cygwin 용 ndk-build 용 간단한 빌드 스크립트
- 30. Windows에서 .so를 컴파일하십시오.
하지만 우리는 사실과 살고 있습니다 :
자세한 내용은이 질문을 참조 http://code.google.com/p/android/issues/detail?id=19881 –